从数据库视图读取数据

本文关键字:数据 读取 视图 数据库 | 更新日期: 2023-09-27 17:56:24

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

我的模型如下所示:

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; }
}

从数据库视图读取数据

您当然可以使用 Code First 映射到视图,只需告诉 Code First 它是一个表,它将对视图使用相同的 SQL,就像它对表一样。显然,如果您尝试更新该实体,如果视图不可更新,则会出现异常。

希望这有帮助。

你使用的是 dbml 吗? 拖动您的 dbo。查看到 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; }
}