我正在使用实体框架代码优先,并尝试创建一个映射到视图的类。我知道如何对表格进行操作,如下所示:
[Table("FIL002")]
public class FIL002
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
public Int64 Payer_Number { get; set; }
public string Payer_Name { get; set; }
}
但是,我找不到 View 的属性(如
[Table(...)]
。有吗?
视图的查询方式与表完全相同。因此,照常使用
[Table()]
即可。
但这不会使关联的数据库集合变为只读,因此您必须确保不要尝试保存从中获取的任何对象(当然,除非您的视图是可写的)。
代码优先中没有直接的方法如所解释的,但您可以通过 DbContext 发送原始 SQL '创建视图' 命令,如下所示:
public class MyInitializer : CreateDatabaseIfNotExists<MyContext>
{
protected override void Seed(MyContext context)
{
query = "CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ]
[ ; ]
<view_attribute> ::=
{
[ ENCRYPTION ]
[ SCHEMABINDING ]
[ VIEW_METADATA ]
} ";
context.Database.SqlCommand(query);
}
}