NHibernte SchemaExport的实体框架等价

时间:2010-05-04 11:46:10

标签: entity-framework

实体框架中是否存在NHibernate SchemaExport的等效性?

鉴于我有一个有效的实体模型,我想以编程方式初始化数据库。

我想在集成测试的设置中使用此功能。

为实体模型创建匹配的DDL也足够了。

2 个答案:

答案 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中使用一些严格的附加注释才能生成合理的索引。