Entity Framework 4.1 之一 : 基礎
阿新 • • 發佈:2018-12-27
原文名稱:Entity Framework 4.1: Basics (1)
讓我們通過一個簡單的實體模型開始吧:訂單和訂單明細,我們使用下面的類來建模。
publicclass Order
{
publicint OrderID { get; set; }
publicstring OrderTitle { get; set; }
publicstring CustomerName { get; set; }
public DateTime TransactionDate { get; set; }
public List<OrderDetail> OrderDetails { get; set; }
}
publicclass OrderDetail
{
publicint OrderDetailID { get; set; }
publicint OrderID { get; set; }
publicdecimal Cost { get; set; }
publicstring ItemName { get; set; }
public Order Order { get; set; }
} 注意類的下述特點:
{
public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetail> OrderDetails { get; set; }
static MyDomainContext()
{
Database.SetInitializer <MyDomainContext>(
new DropCreateDatabaseIfModelChanges<MyDomainContext>());
}
} 這個類是 EF 相關的,它不需要與你的模型類出現在同一個程式集中。 context 必須滿足下面的要求:
{
publicint OrderID { get; set; }
publicstring OrderTitle { get; set; }
publicstring CustomerName { get; set; }
public DateTime TransactionDate { get; set; }
public List<OrderDetail> OrderDetails { get; set; }
}
publicclass OrderDetail
{
publicint OrderDetailID {
publicint OrderID { get; set; }
publicdecimal Cost { get; set; }
publicstring ItemName { get; set; }
public Order Order { get; set; }
} 注意類的下述特點:
- 沒有派生自任何 EF 類
- 沒有使用 EF 標籤
- 訂單 Order 包含若干的訂單明細 OrderDetail,訂單明細包含一個指向訂單的引用。
- 每一個屬性是:
- 簡單的 CLR 型別,例如:string, int 等等
- 實體型別,例如:訂單
- 實體的 List 集合,例如:List<OrderDetail>
{
public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetail> OrderDetails { get; set; }
static MyDomainContext()
{
Database.SetInitializer
new DropCreateDatabaseIfModelChanges<MyDomainContext>());
}
} 這個類是 EF 相關的,它不需要與你的模型類出現在同一個程式集中。 context 必須滿足下面的要求:
- 派生自 System.Data.Entity.DbContext
- 對於你希望使用的每一個實體集定義一個屬性
- 每一個屬性的型別是 System.Data.Entity.DbSet<T>,T 就是實體的型別
- 每一個屬性都是讀寫屬性 read/write ( get/set )