我想将POCO类映射到数据库视图。我的目标是使用自定义数据库初始化程序(实现IDatabaseInitializer<T>)
除非我弄错了,否则我必须使用[Table(“MyViewName”]属性修饰映射到视图的类。但是当我这样做时Database.CreateIfNotExists()
将创建一个名为MyViewName
的表,在我有机会执行创建视图的SqlQuery
命令之前。
我怀疑我正在做一些无序的事情,但只有IDatabaseInitializer界面中的一个方法可以使用,我看不出它可能是什么。
答案 0 :(得分:0)
一种可能的解决方案是简单地让CreateIfNotExists做它的事情,然后删除新创建的表并用视图替换它。似乎有点hackish但它确实有效。
if (context.Database.CreateIfNotExists())
{
context.Database.ExecuteSqlCommand(@"drop table MyCustomView");
context.Database.ExecuteSqlCommand(@"create view MyCustom View as ...");
}