将MVC3模型映射到MSSQL 2008 View首先使用代码,然后使用数据库

Doa*_*ong 3 sql-server entity-framework sql-view ef-code-first ef-database-first

在SQL Server 2008中,我有一个这样的视图:

CREATE VIEW products AS
   SELECT a.ID, a.Name, b.ID as SubID, b.Name as SubName
   FROM main_product as a 
   INNER JOIN sub_product as b on a.ID = b.mainID
Run Code Online (Sandbox Code Playgroud)

这是我的模特:

Public class Products
{
    public int ID { get; set; }
    public int Name { get; set; }
    public int SubID { get; set; }
    public int SubName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我如何将MVC3的视图映射到SQL Server视图?

UPDATE

我试过这个:

 public class PartialContext : DbContext
 {       
     protected override void OnModelCreating(DbModelBuilder modelBuilder)
     {
         modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
     }

     public DbSet<Test> Test { get; set; }

     public DbSet<Products> Products { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

和控制器:

public class ViewController : Controller
{
    private PartialContext db = new PartialContext();

    //
    // GET: /View/

    public ViewResult Index()
    {
        return View(db.Products.ToList());
    }
}
Run Code Online (Sandbox Code Playgroud)

这个努力给了我一个错误:"无效的对象名称'dbo.Products'."

编辑2

只是为了澄清.我想同时使用code firstdatabase first技术.这意味着我想手动创建数据库和模型类,而不是通过代码生成器或数据库生成器

UPDATE

问题解决.我在命名模型类时犯了一个错误

Bap*_*tta 5

更新EF模型

在此输入图像描述

现在只需查询视图即可

 using (var ctx = new YourDBContext())
  {
    var result = from t in ctx.product
                 select new Products{
                   ID= ctx.ID,
                   Name=ctx.Name
                 };    
  }
Run Code Online (Sandbox Code Playgroud)

有关以下链接的更多信息

http://www.mssqltips.com/sqlservertip/1990/how-to-use-sql-server-views-with-the-entity-framework/

我认为它会对你有所帮助.