2015-05-14 65 views
3

我正在使用Entity Framework Code First,并试图创建一个将映射到View的类。我知道怎么做了一个表,如下图所示:?是否有像[Table()]这样的属性来创建映射到EF Code First中的视图的类?

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

但是,我无法找到视图属性(就像[Table(...)]有一个

回答

0

视图是在完全相同的方式查询因此,照常使用[Table()]

虽然这不会使关联的数据库集合为只读,但是您必须确保不要尝试保存任何从其中取出的对象(除非你的观点当然是可写的)

+0

如何EF但是知道这是一个看法?我不希望代码允许更改此对象的实例(SaveChanges是否可用?) – raminsh

+0

您必须先创建视图。或者你可以忽略SQL视图并使用LINQ –

+0

我不认为EF首先支持只读集合。如果您想确保没有写入操作即使有人试图这样做,您可以覆盖SaveChanges并手动检查是否有任何应该只读的实体已被更改。 –

0

有一个在代码第一没有直接的方法as explained但你可以你的DbContext发送raw SQL'create view'命令是这样的:

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); 
    } 
} 
相关问题