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

EntityFramework 領域驅動設計實踐(六):領域對象生命週期——工廠模式與 EF 生成代碼

     編輯:關於.NET

生命週期兩大角色:工廠與倉儲

工廠:從無到有創建對象(充滿 new),負責建構完整聚合。倉儲:持久化、重建、刪除。

EF 自動生成的工廠方法

每個實體擁有靜態 CreateEntity 方法,包含所有純量屬性參數:

public static Customer CreateCustomer(int id, Name name, Address billing, Address delivery,
    string loginName, string loginPwd, DateTime dob) {
    var c = new Customer();
    c.Id = id;
    c.Name = StructuralObject.VerifyComplexObjectIsNotNull(name, "Name");
    c.BillingAddress = StructuralObject.VerifyComplexObjectIsNotNull(billing, "BillingAddress");
    c.DeliveryAddress = StructuralObject.VerifyComplexObjectIsNotNull(delivery, "DeliveryAddress");
    c.LoginName = loginName;
    c.LoginPassword = loginPwd;
    c.DayOfBirth = dob;
    return c;
}

需改進之處

  1. ID 不應由調用者指定:持久化鍵由基礎設施維護,領域標識符應為業務語義碼(如 SO002947)。
  2. 聚合成員延遲創建:CreditCards 等集合屬性在使用時才初始化,符合聚合完整性與效能平衡。

工廠最佳實踐原則

  • 隱藏創建細節,非業務關注點。
  • 創建完整聚合,維護領域不變量。
  • 可用工廠方法(聚合根內)或獨立工廠類,視複雜度決定。
  • 參數盡量用介面/抽象類,降低耦合。

單元測試驗證

測試 CreditCards 不為 null

工廠創建的聚合根,其集合屬性已正確初始化(非 null),保證聚合完整性。

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