如何将数据库视图添加为IDatabaseInitializer的一部分

时间:2013-06-05 11:40:08

标签: ef-code-first entity-framework-5

我想将POCO类映射到数据库视图。我的目标是使用自定义数据库初始化程序(实现IDatabaseInitializer<T>)

)创建视图

除非我弄错了,否则我必须使用[Table(“MyViewName”]属性修饰映射到视图的类。但是当我这样做时Database.CreateIfNotExists()将创建一个名为MyViewName的表,在我有机会执行创建视图的SqlQuery命令之前。

我怀疑我正在做一些无序的事情,但只有IDatabaseInitializer界面中的一个方法可以使用,我看不出它可能是什么。

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是简单地让CreateIfNotExists做它的事情,然后删除新创建的表并用视图替换它。似乎有点hackish但它确实有效。

if (context.Database.CreateIfNotExists())
{
    context.Database.ExecuteSqlCommand(@"drop table MyCustomView");
    context.Database.ExecuteSqlCommand(@"create view MyCustom View as ...");
}