我正在做关于微软电影的教程来学习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表中获取数据,以及电影模型从电影表中获取数据,但两者是否具有相同的连接字符串?
修改 :
假设在创建项目之前我已经有了两个数据库表。然后我如何让我的模型指向它们?
答案 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; }
}