2012-06-28 47 views
0

我面對的,我需要防止直接創造的實體對象的場景。實體框架避免直接POCO創作

我使用的代碼第一次。我想在某個地方只有一個方法,我應該能夠創建該對象。有沒有什麼常用的做法?

回答

1

EF可以與具有私人/保護構造實體合作。

所以讓我們這個樣本方面:

public class MyEntity 
{ 
    protected MyEntity() { } 

    public int Id { get; set; } 

    public string Name { get; set; } 
} 

public class MyContext : DbContext 
{ 
    public DbSet<MyEntity> MyEntities { get; set; } 
} 

然後用new MyEntity()創建實體會導致編譯錯誤。

但是,您仍然可以通過EF創建實體,DbSet.CreatemyContext.MyEntities.Create();以及MyEntity上的所有其他操作都可以使用,例如,查詢和更新等等。

當然,你也可以有MyEntity其管理對象創建一個靜態工廠方法

public class MyEntity 
{ 

    //... 

    public static MyEntity MyCreate() 
    { 
     return new MyEntity(); 
    } 
}