04创建实体模型
在使用LINQ to SQL之前,除了要属性LINQ的语法,还要创建实体模型。
1 创建Project
新建控制台项目,命名为LinqConsoleApp
2 添加DLL和Namepace
1.添加System.Data.Linq.dll
2.using System.Data.Linq;
3.using System.Data.Linq.Mapping;
3 将类映射到数据库表
以NorthWind为例,建立Customer和Order实体及其联系。
3.1创建Order类
[Table(Name = "Orders")] public class Order { private int _OrderID = 0; private string _CustomerID; private EntityRef<Customer> _Customer; public Order() { this._Customer = new EntityRef<Customer>(); } /// <summary> /// OrderID 属性 /// </summary> /// <remarks> /// DbType:数据表字段的数据类型 /// IsDbGenerated:是否自动增长 /// </remarks> [Column(Storage = "_OrderID", DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)] public int OrderID { get { return this._OrderID; } } [Column(Storage = "_CustomerID", DbType = "NChar(5)")] public string CustomerID { get { return this._CustomerID; } set { this._CustomerID = value; } } //------------ 定义联系 ------------------------ /// <summary> /// 导航到 Customer /// </summary> /// <remarks> /// 使用 CustomerID 关联到 Customer ThisKey /// Order的外键(CustomerID) 在 Customer 是主键,所以使用 ThisKey /// </remarks> [Association(Storage = "_Customer", ThisKey = "CustomerID")] public Customer Customer { get { return this._Customer.Entity; } set { this._Customer.Entity = value; } } }
3.2创建Customer类
/// <summary> /// 客戶類 /// </summary> /// <remarks> /// Table的Name屬性指定對應的數據庫表名 /// </remarks> [Table(Name = "Customers")] public class Customer { private string _CustomerID; /// <summary> /// 類成員之屬性對應到數據庫表的字段 /// 默認使用屬性,可以使用Name指定,並且Name的值必須是數據庫表存在的字段名。 /// IsPrimaryKey:是否為主鍵 /// Storage:儲存值的類成員之字段 /// </summary> [Column(IsPrimaryKey = true, Storage = "_CustomerID", Name = "CustomerID")] public string CustomerID { get { return this._CustomerID; } set { this._CustomerID = value; } } private string _City; [Column(Storage = "_City")] public string City { get { return this._City; } set { this._City = value; } } //------------ 定義聯繫 ------------------------ //客戶有多個訂單,所以使用Set private EntitySet<Order> _Orders; public Customer() { this._Orders = new EntitySet<Order>(); } /// <summary> /// 客戶導航到訂單 /// </summary> /// <remarks> /// 使用 CustomerID 關係到 Orders OtherKey /// Orders 為多端,所以使用 OtherKey /// Order 用到的外鍵:CustomerID /// </remarks> [Association(Storage = "_Orders", OtherKey = "CustomerID")] public EntitySet<Order> Orders { get { return this._Orders; } set { this._Orders.Assign(value); } } }
注意:默认使用属性,可以使用Name指定,并且Name的值必须是数据库表存在的字段名。
方法二、使用工具,命令行/图形设计工具
人的一生应该这样度过:当他回首往事的时候,不会因为虚度年华而悔恨,也不会因为碌碌无为而羞愧。