做网站实现登陆功能,网站群建设进度,图片制作成视频的手机软件,个人博客网站域名注册对象关系设计器#xff08;O/R 设计器#xff09;的作用#xff1a; 1. 提供了一个可视化设计图面#xff0c;用于创建基于数据库中对象的 LINQ to SQL 实体类和关系#xff1b;创建映射到数据库中的对象的对象模型。 2. 生成一个强类型 DataContext#xff0c;用于在实体…对象关系设计器O/R 设计器的作用 1. 提供了一个可视化设计图面用于创建基于数据库中对象的 LINQ to SQL 实体类和关系创建映射到数据库中的对象的对象模型。 2. 生成一个强类型 DataContext用于在实体类与数据库之间发送和接收数据。 3. 可以将存储过程和函数映射到 DataContext 方法以便返回数据和填充实体类。 4. 提供了对实体类之间的继承关系进行设计的能力。 对象关系设计器O/R 设计器是什么 —— 是个 LINQ to SQL 类和数据库对象之间提供映射的 XX.dbml 文件这个文件里有什么呢——类型化的 DataContext 和实体类。 —— 有两个不同的区域左侧的实体窗格和右侧的方法窗格。 打开 O/R 设计器 1. 在项目中添加新的“LINQ to SQL 类”项 2. 说明 a. O/R 设计器是一个简单的对象关系映射器因为它仅支持 1:1 映射关系 b. 是一个单向代码生成器这表示代码文件中只反映对设计器图面所做的更改O/R 设计器中不会反映对代码文件的手动更改。 c. 在保存设计器并重新生成代码时将覆盖在代码文件中手动进行的所有更改 创建和配置 DataContext 在向项目中添加“LINQ to SQL 类”项并打开 O/R 设计器后空设计图面表示一个可供配置的空 DataContext。DataContext 是使用拖动到设计图面上的第一项所提供的连接信息进行配置的. 1. DataContext 类是一个 LINQ to SQL 类它充当 SQL Server 数据库与映射到该数据库的 LINQ to SQL 实体类之间的管道DataContext 类包含用于连接数据库以及操作数据库数据的连接字符串信息和方法。 创建映射到数据库表和视图的实体类 1. Entity 映射到数据库表和视图的 LINQ to SQL 类称为“实体类”。实体类映射到记录而实体类的各个属性则映射到构成一条记录的各个列 2. 实体类与数据库表或视图之间只能具有 1:1 映射关系。不支持复杂映射例如将一个实体类映射到多个表。但是可以将一个实体类映射到一个联接多个相关表的视图。 3. 通过将表或视图从“服务器资源管理器”/“数据库资源管理器”拖动到 O/R 设计器上除了可以创建用于执行更新的 DataContext 方法以外还可以创建实体类。 LINQ to SQL 对象模型 1. 在 LINQ to SQL 中用开发人员所用的编程语言表示的对象模型映射到关系数据库的数据模型。然后就会按照对象模型来执行对数据的操作。 下表概括了 LINQ to SQL 对象模型中最基本的元素及其与关系数据模型中的元素的关系 LINQ to SQL 实体类与数据库表 (基于属性的映射 (LINQ to SQL)) 在 LINQ to SQL 中数据库表由实体类表示。实体类与您可能创建的任何其他类相似只不过对实体类进行批注的方法是使用将该类与数据库表关联的特殊信息。您需通过向类声明中添加自定义属性 (TableAttribute) 来进行这种批注如下面的示例所示LINQ to SQL 仅支持单表映射关系即实体类必须只映射到一个数据库表且无法同时将数据库表映射到多个类。 您可以使用 TableAttribute 属性 (Attribute) 的 Name 属性 (Property) 来指定表名称并可以选择使用架构名称来限定表名称。如果您未使用 Name 属性指定名称则假定表名称与类名相同。 [Table(Name Customers)] public class Customerzz { public string CustomerID; // ... public string City; } 只有声明为表的类即实体类的实例才能保存到数据库中。
LINQ to SQL 类成员与数据库列 除了将类与表关联以外您还需指定字段或属性来表示数据库列。为此LINQ to SQL 定义了 ColumnAttribute 属性如下面的示例所示 [Table(Name Customers)] public class Customer { [Column(IsPrimaryKey true)] public string CustomerID; [Column] public string City; } 只有映射到列的字段和属性才能持久保存到数据库中从数据库中也只能检索这样的字段和属性。那些未声明为列的字段和属性被视为应用程序逻辑的瞬态部分。
LINQ to SQL 关联与数据库外键关系 在 LINQ to SQL 中数据库关联如外键到主键关系是通过应用 AssociationAttribute 属性表示的。在下面的代码段中Order 类包含具有 AssociationAttribute 属性 (Attribute) 的 Customer 属性 (Property)。此属性 (Property) 及其属性 (Attribute) 为 Order 类提供了与 Customer 类的关系。 下面的代码示例显示了 Order 类中的 Customer 属性 (Property)。 [Association(NameFK_Orders_Customers, Storage_Customer, ThisKeyCustomerID, IsForeignKeytrue)] public Customer Customer { get { return this._Customer.Entity; } set { Customer previousValue this._Customer.Entity; if (((previousValue ! value) || (this._Customer.HasLoadedOrAssignedValue false))) { this.SendPropertyChanging(); if ((previousValue ! null)) { this._Customer.Entity null; previousValue.Orders.Remove(this); } this._Customer.Entity value; if ((value ! null)) { value.Orders.Add(this); this._CustomerID value.CustomerID; } else { this._CustomerID default(string); } this.SendPropertyChanged(Customer); } } }