从DB View读取数据

时间:2013-01-29 11:58:12

标签: c# asp.net-mvc entity-framework dbcontext

我是asp.net MVC的新手。我想从数据库视图中检索数据并将其映射到我的模型。 Model类具有与视图相同的属性集。有没有办法可以从db视图而不是表中获取数据(由于代码优先,表会自动创建)。

我的模型看起来像这样:

public class Product{

    public long ID { get; set; }

    [Display(Name = "Product Code")]
    public int ProductCode { get; set; }

    [Display(Name = "Product Title")]
    public string ProductTitle { get; set; }
};

public class ProductDBContext : DbContext
{
    public DbSet<Product> Products 
    { 
        get; set; }
}

2 个答案:

答案 0 :(得分:0)

你当然可以使用Code First映射到一个视图,只需告诉Code First它是一个表,它将对表的视图使用相同的SQL。显然,如果您尝试更新这些实体,如果视图不可更新,您将收到异常。

希望这有帮助。

答案 1 :(得分:0)

您使用的是dbml吗?将dbo.View拖到dbml,在使用表时使用,但无法添加和更新。

public class ProductDBContext : DbContext
{
    public ProductDBContext ()
        : base("MyConnection") //web.config
    {
    }

    public DbSet<Product> Products { get; set; }
}

// Your View:
// CREATE VIEW dbo.Product
// AS
// SELECT dbo.ProductProfile.ID, dbo.ProductProfile.ProductCode, dbo.ProductTitle.ProfileID, dbo.ProductTitle.ProductTitle 
// FROM   dbo.ProductProfile INNER JOIN
//          dbo.ProductTitle ON dbo.ProductProfile.ID = dbo.ProductTitle.ProfileID
//
[Table("dbo.Product")]  
public class Product
{
    [Key]
    public long ID { get; set; }

    [Display(Name = "Product Code")]
    public int ProductCode { get; set; }

    [Display(Name = "Product Title")]
    public string ProductTitle { get; set; }
}