关于关系的EF Code First方法

时间:2015-01-27 23:43:23

标签: c# asp.net asp.net-mvc entity-framework

成为 ASP .NET的新手我一直在研究实体建模方法,似乎ORM使用实体框架跟随代码首先对我来说是最好的方法。

通过关注this教程,我得到的印象是,对于每个实体,您需要创建一个connectionstring(如果我错了,请更正我当涉及到关系数据时,这个事实让我感到困惑,因为根据这个例子,数据库本身似乎只涵盖一个实体。那么如何在EF中处理关系数据。

PS:出于统一目的,请使用实体MoviesCustomers以及根据正确命名约定命名的关系表。

2 个答案:

答案 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,并且在教程中进行时将包含电影和其他内容。

也可以将它们放在同一个数据库中。