来自CakePHP的ASP.NET MVC 4 / SimpleMembership问题

时间:2012-11-15 04:24:43

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

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

现在提问!

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

我应该拥有多少个DB上下文?它看起来像这样吗?

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

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

如果我想要从作业到用户(例如海报和Taker)有多个“导航属性”(正确使用?),我是否会这样做?

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

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

与前一个问题相关,如果我正在使用SimpleMembership并将我的模型和UsersContext的上下文分开(因为我认为我应该,如果我错了就纠正我),我如何在背景边界?

回答这些问题真的有助于我开始!谢谢!

1 个答案:

答案 0 :(得分:1)

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

Job.cs

Application.cs

MyContext.cs

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

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

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