是否有像 [Table()] 这样的属性来创建映射到 EF Code First 中的视图的类?

问题描述 投票:0回答:3

我正在使用实体框架代码优先,并尝试创建一个映射到视图的类。我知道如何对表格进行操作,如下所示:

[Table("FIL002")]
public class FIL002
{  
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
    public Int64 Payer_Number { get; set; }
    public string Payer_Name { get; set; }
}

但是,我找不到 View 的属性(如

[Table(...)]
。有吗?

c# entity-framework code-first
3个回答
0
投票

视图的查询方式与表完全相同。因此,照常使用

[Table()]
即可。

但这不会使关联的数据库集合变为只读,因此您必须确保不要尝试保存从中获取的任何对象(当然,除非您的视图是可写的)。


0
投票

代码优先中没有直接的方法如所解释的,但您可以通过 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);
  }
}

0
投票

从 Entity Framework Core 5.0 开始,有一个属性正是用于此目的:

[Keyless]

请参阅文档此处

© www.soinside.com 2019 - 2024. All rights reserved.