实体框架中是否存在NHibernate SchemaExport的等效性?
鉴于我有一个有效的实体模型,我想以编程方式初始化数据库。
我想在集成测试的设置中使用此功能。
为实体模型创建匹配的DDL也足够了。
答案 0 :(得分:3)
是的 - 鉴于您正在使用Entity Framework 4 (这是令人困惑的,第二个版本......)
编辑:这是使用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就可以将复杂的东西添加到生成的数据库模式中。
答案 1 :(得分:-1)
不,并且认真地我很想知道为什么nhibernate不喜欢这个。
问题是:O / R映射器的数据库信息比非平凡设置所需的信息少。
缺少的是:
我真的很喜欢测试方法(请检查数据库是否足以满足您所知道的所有对象),但是生成非常棘手 - 去过那里,做到了。您需要在ORM中使用一些严格的附加注释才能生成合理的索引。