不同的模型从同一数据库ASP.NET MVC 4中的不同表中获取数据

时间:2014-01-22 00:42:42

标签: c# asp.net sql-server asp.net-mvc asp.net-mvc-4

我正在做关于微软电影的教程来学习ASP.NET MVC4。如果可能,我想要更多信息。

我在页面http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-model

它说要在电影类中添加这个类

public class MovieDBContext : DbContext
{
    public DbSet<Movie> Movies { get; set; }
}

然后创建一个新的连接字符串

  <add name="MovieDBContext" 
       connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" 
       providerName="System.Data.SqlClient" 
  /> 

这是为了获取电影的信息。

然而,我的问题如下。如果我们在数据库中有两个表,例如一个用于电影,一个用于演员。我们想获得这两个表的数据,我们应该创建两个不同的模型吗?但我们只使用一个数据库(连接字符串)。那么,我们如何能够说演员模型,将从actor表中获取数据,以及电影模型从电影表中获取数据,但两者是否具有相同的连接字符串?

修改

假设在创建项目之前我已经有了两个数据库表。然后我如何让我的模型指向它们?

3 个答案:

答案 0 :(得分:4)

创建数据库时,会添加元数据,并且EntityFramework知道要为每个模型引用哪个表。连接字符串是相同的,因为一个数据库中有两个表,连接字符串是数据库级连接信息,而不是从表数据到模型的转换。

基本上,代码的基础知识首先是One Model = One Table。您可以执行外键关系等操作,因此如果您的Actor模型引用了Movies,则还将创建基础数据结构以匹配。

编辑:如果您对创建DBContext的方式感到困惑,可以创建一个包含DBSet类型的单个DBContext类,并且只使用一个连接字符串,例如:

public class ApplicationDBContext : DbContext
{
    public DbSet<Movie> Movies { get; set; }
    public DBSet<Actor> Actors { get; set; }
}

答案 1 :(得分:1)

连接字符串不会指向表,它指向数据库。您创建的模型将与正确的表匹配。如果您使用EF代码第一种方法,它甚至会创建单独的表来匹配您的模型。

<强>更新 最简单的例子我可以找到数据库第一种方法。 http://weblogs.asp.net/scottgu/archive/2010/08/03/using-ef-code-first-with-an-existing-database.aspx

答案 2 :(得分:1)

看起来像一个很好的教程。如果只有一张桌子可以完成图片。

当您进入下一部分时,您将看到作者使用LINQ来访问数据。如果要添加相关表,则可以添加.Include(“Actors”)语句来获取其他数据。

SolidFish笔记http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-4 - 这是我用来开始并包含多个表格的教程。

connectionstring用于数据库,因此您只能使用一个。

一旦开始获得多个模型,您应该开始使用包含模型数据的viewmodel并从中设置视图。

即。一个粗略的例子:

    public class MoviesViewModel 
    {   
    // Properties
    public Movie Movie { get; set; }
    public IEnumerable<Actors> Actors { get; set; }

    }