首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

精進不休 .NET 4.0 (7):ADO.NET Entity Framework 4.0 新特性全覽

     編輯:關於.NET

EF 4.0 主要新增功能

  • 外鍵關聯支援(Foreign Key Association)
  • 複雜類型
  • 多表映射單一實體 / 單表拆分多實體
  • LINQ to Entities 增強
  • POCO 支援
  • Model-First、T4 模板、Lazy/Explicit Loading、SQL 生成改進等

1. 外鍵 Demo

// 方式一:指定外鍵值
var p = new Product { ProductCategoryID = 18, ... };
ctx.Products.AddObject(p);
ctx.SaveChanges();

// 方式二:指定導航屬性物件
var p = new Product { ProductCategory = ctx.ProductCategories.Single(c=>c.ID==18), ... };
ctx.SaveChanges(); // 無需手動 AddObject,關聯端自動處理

2. 複雜類型 Demo

  • EDM 設計器右鍵 → Add → Complex Type,或選取多屬性 → Refactor into New Complex Type。
  • 存儲過程回傳值可映射至自訂複雜類型(可自動生成)。
var name = ctx.Customers.First().Name; // Name 為複雜類型
var cust = ctx.GetCustomer().First();  // 存儲過程映射類型

3. 單表拆分多實體

EDM 設計器:新增兩實體 → 建立 1:1 關聯 → 雙擊關聯線編輯約束指定主/從表與主鍵。

var log = ctx.ErrorLogs.First();
log.ErrorLogExtReference.Load();
Console.Write(log.ErrorLogExt.ErrorMessage);

4. LINQ to Entities 新功能

  • EntityFunctions / SqlFunctions 對應 SQL 函數(如 DateDiff)。
  • 支援 Single() 擴充方法。
  • ESQL 可呼叫 SQL 使用者自訂函數。
  • CLR 方法透過 [EdmFunction] 映射至 SQL UDF。
[EdmFunction("Model.Store", "ufnGetFullName")]
public static string GetFullName(string first, string middle, string last)
{ throw new NotSupportedException("僅限 LINQ 運算式"); }

5. POCO 支援

  • 線上 T4 範本:ADO.NET C# POCO Entity Generator。
  • EDM 設計器右鍵 → Add Code Generation Item → 選擇該範本。
  • POCO 與非 POCO 不能共存同一組件(非 POCO 有 [assembly: EdmSchemaAttribute()])。

6. 其他新特性速記

  1. T4 模板引擎:微軟代碼生成引擎。
  2. EDM 設計器增強:視覺化操作更完善。
  3. Model-First:概念模型 → Generate Database from Model → 產生 DDL。
  4. Code Only:純代碼定義模型(EF 4.0 正式版移除,後在 EF 4.1 Code First 回歸)。
  5. SQL 生成改進:更優化的查詢語句。
  6. Lazy Loading:context.ContextOptions.DeferredLoadingEnabled = true (預設開啟)。
  7. Explicit Loading:context.LoadProperty(entity, "NavProp") 或 context.LoadProperty(entity, e => e.NavProp)(強型別避免拼字錯誤)。
  8. 內建 T4 範本:EntityObject Generator / POCO Entity Generator / Self-Tracking Entity Generator。
  9. 複數/單數化命名選項:建立模型時自動調整實體集與實體名稱。

總結

EF 4.0 大幅補強了 3.5 版的缺口,特別是外鍵、POCO、Model-First 與 T4 客製化,奠定了現代 .NET 資料存取框架的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved