2010-09-15 163 views
1

由Entity Framework 4生成的代碼(主要是AddTo和Create方法)應該直接使用這些代碼嗎?我試圖瞭解Create方法。例如CreateDinner方法(在NerdDinner範例)是這樣的:生成的實體框架代碼

public static Dinner CreateDinner(global::System.Int32 dinnerID, global::System.String title, global::System.DateTime eventDate, global::System.String description, global::System.String hostedBy, global::System.String contactPhone, global::System.String address, global::System.String country, global::System.Double latitude, global::System.Double longitude) 
    { 
     Dinner dinner = new Dinner(); 
     dinner.DinnerID = dinnerID; 
     dinner.Title = title; 
     dinner.EventDate = eventDate; 
     dinner.Description = description; 
     dinner.HostedBy = hostedBy; 
     dinner.ContactPhone = contactPhone; 
     dinner.Address = address; 
     dinner.Country = country; 
     dinner.Latitude = latitude; 
     dinner.Longitude = longitude; 
     return dinner; 
    } 

沒有的SubmitChanges(),當我查看引用,這種方法不被任何地方調用。這種方法的目的是什麼?

回答

4

實體框架默認代碼生成模板爲您的模型中的每個實體對象創建一個Factory Method。這個靜態方法可以讓你快速創建一個新的實體,並且它的參數列表由所有的不可爲空的屬性組成(不是所有的)。
因此,這並不意味着要保存或提交任何數據到數據庫。

+0

我想我想了解Factory模式如何適合這個實體框架代碼。你能幫我理解爲什麼使用這個工廠方法創建我的實體更快,而不僅僅是使用實體的構造函數:Entity e = new Entity() – Prabhu 2010-09-16 00:46:34

+1

因爲像我說過的,它的參數列表只包含類中的非空屬性以便您可以快速想出將該對象保存在數據庫中的最低要求。當然,你可以直接使用對象初始值設定語法或類構造函數,但是你可能會忘記初始化所有不可爲空的字段,因此你的保存將在運行時失敗。除此之外,它並不比構造函數更快或更快,因爲你可以看到,即使這個工廠方法只是一個對象初始化器實現。 – 2010-09-16 01:21:19

相關問題