1

我对 ASP.NET MVC(和一般的 .NET)非常陌生。我正在尝试将一个具有一些 CRUD 功能的基本网站组合在一起,但我被 EF 和 SimpleMembership 绊倒了。我花了几个小时寻找好的入门信息,但似乎 MVC 4 太新了,没有成熟的内容(我能理解)。

现在提问!

如果我想添加一些模型,例如 Jobs 和 Applications,我应该将它们全部集中在一个单一的整体文件中,还是将每个模型分解为自己的文件?

我应该有多少数据库上下文?会是这个样子吗?

public class MyContext : DbContext
{
    public DbSet<Job> Jobs { get; set; }
    public DbSet<Application> Applications { get; set; }
}

UsersContext(来自 SimpleMembership)是否应该与我为模型创建的上下文分开?

如果我想拥有从工作到用户(例如海报和接受者)的多个“导航属性”(正确使用?),我会这样做吗?

public class Job
{
    public int JobId { get; set; }

    public virtual User Poster { get; set; }
    public virtual User Taker { get; set; }
}

与上一个问题相关,如果我使用 SimpleMembership 并将我的模型和 UsersContext 的上下文分开(我认为我应该,如果我错了,请纠正我),我如何跨上下文边界进行引用?

回答这些问题真的会帮助我起步!谢谢!

4

1 回答 1

1

每个类都应该有自己的 cs 文件,其名称与类的名称匹配:

作业.cs

应用程序.cs

MyContext.cs

每个数据库都应该有一个 DbContext。因此,如果您希望所有这些表都在同一个数据库中,那么您需要一个 DbContext。

跨上下文的任何引用 AFAIK 都不会得到支持。您可以添加 int 外键属性,并使用属性 [NotMapped] 创建引用,并在从每个数据库中分别获取两个实体时手动分配它们。即 if(someJob.PosterKey == someUser.UserKey) { someJob.Poster = someUser }。不过会有点痛。

编辑:我可能要做的第一件事就是将 UsersContext 类从 AccountsModel 文件中取出,并使其成为自己的文件。通常我以我的应用程序命名上下文。因此,如果我的应用程序名为 Jobs Manager,我将调用上下文 JobsManagerContext 并将其放入 JobsManagerContext.cs 文件中(我还将更改连接字符串以命名我的 db JobsManager)。您可以将所有帐户模型类保留在第一个文件意义上,它们都是一起生成的。但是为每个新模型类创建一个新文件。

于 2012-11-15T04:46:15.757 回答