成为 ASP .NET的新手我一直在研究实体建模方法,似乎ORM
使用实体框架跟随代码首先对我来说是最好的方法。
通过关注this教程,我得到的印象是,对于每个实体,您需要创建一个connectionstring
(如果我错了,请更正我当涉及到关系数据时,这个事实让我感到困惑,因为根据这个例子,数据库本身似乎只涵盖一个实体。那么如何在EF中处理关系数据。
PS:出于统一目的,请使用实体Movies
,Customers
以及根据正确命名约定命名的关系表。
答案 0 :(得分:2)
您可以按DbContext
创建连接字符串。这是定义DBContext的类:
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
}
要向此上下文添加更多表格,请添加更多这样的行(例如,public DbSet<Customer> Customers { get; set; }
。
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
public DbSet<Ticket> Tickets { get; set; }
}
从上下文中访问这些:
public class TicketController {
private MovieDBContext db = new MovieDBContext ();
public ActionResult Index(int movieId) {
var listOfTickets = db.Tickets.Where(t=>t.MovieId == movieId).ToList();
var parentMovie = db.Movie.Where(m=>m.Id == movieId).Single();
...
}
}
答案 1 :(得分:1)
Connection String: 包含作为参数从数据提供者传递到数据源的初始化信息。
每次连接到不同的东西时都需要一个新的连接字符串(你可以使用相同的ConnectionString有两个不同的DBContexts),在本教程中虽然两个连接字符串的数据源相同,但AttachDbFileName是不同的。
初始化每个DbContext时,它将使用其中一个连接字符串。在本教程中,第一个连接字符串(默认连接)用于成员资格(用户帐户等),另一个连接字符串用于MovieDBContext,并且在教程中进行时将包含电影和其他内容。
也可以将它们放在同一个数据库中。