實體框架與NHibernate SchemaExport是否存在等價關係?NHibernte SchemaExport的實體框架等效
鑑於我有一個工作的實體模型,我想編程初始化一個數據庫。
我想在設置我的集成測試時使用此功能。
爲實體模型創建匹配的DDL也足夠了。
實體框架與NHibernate SchemaExport是否存在等價關係?NHibernte SchemaExport的實體框架等效
鑑於我有一個工作的實體模型,我想編程初始化一個數據庫。
我想在設置我的集成測試時使用此功能。
爲實體模型創建匹配的DDL也足夠了。
是 - 給你與實體框架的工作(這是容易混淆的是,第二個版本......)
編輯:這是僅EF4做到這一點的方式。在我以下的原文中描述瞭如何使用EF CTP3中的純代碼方法完成同樣的事情。
如何:出口型數據庫在EF4
導出模型數據庫,在設計師的任意位置單擊鼠標右鍵(如果你沒有一個實體)並選擇「從模型生成數據庫.. 。「並按照嚮導中描述的步驟操作。瞧!
原帖,瞄準EF4 CTP3和代碼,只有:這是代碼,我在一個小設置實用程序使用。
var builder = new ContextBuilder<ObjectContext>();
// Register all configurations you need here
builder.Configurations.Add(new EntryConfiguration());
builder.Configurations.Add(new TagConfiguration());
var conn = GetUnOpenedSqlConnection();
var db = builder.Create(conn);
if (db.DatabaseExists())
{ db.DeleteDatabase(); }
db.CreateDatabase();
它works on my machine(雖然我在這裏已經簡化爲簡潔......一點點),所以如果事情不工作,那是因爲我過於簡單化。
請注意,正如TomTom所說,您只會獲得基本知識。但即使您有更復雜的模式,它也非常有用 - 您只需手動編寫DDL即可將複雜的內容添加到生成的數據庫模式中。
似乎ContextBuilder實際上不是EF4的一部分,而只是Microsoft ADO.NET實體框架功能社區技術預覽版3的一部分。這是否正確? 此外,上述方法僅適用於「僅限代碼」方法,是嗎?或者有沒有用ContextBuilder註冊現有Model.edmx的方法? – jbandi 2010-05-04 22:39:59
@jbandi:沒錯,這是CTP。但是,在設計師中完成同樣的事情甚至更容易。看我的編輯。 – 2010-05-05 01:08:08
謝謝! 但是我意識到通過設計器的導出功能,但這不是我正在尋找的,我正在尋找一個編程解決方案... 我會將您的答案標記爲 – jbandi 2010-05-05 05:57:06
沒有,並認真我不知道爲什麼nhibernate麻煩有這個。
問題是:O/R映射器的數據庫信息量少於非平凡設置所需的信息量。
缺少有:
我真的很喜歡測試方法(請檢查一下da tabase對於你所知道的所有對象來說已經足夠了),但是一代人非常棘手 - 在那裏完成了。您需要在ORM中進行一些嚴格的附加註釋才能生成合理的索引。
所有有效的點,但這也許應該被添加爲原始問題的評論,而不是作爲答案,僅僅因爲這不能回答原來的問題,這是值得記住的。 – 2013-09-05 10:37:29
儘管我給出的答案是設置數據庫的工作,但我建議在測試中使用'TransactionScope',而不是將其存儲在測試類的專用字段中。在每個測試的設置中,您打開事務範圍(我通過分配一個'new'實例來完成),並在拆卸過程中執行回滾。 – 2010-05-04 13:17:51