我对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的上下文分开(因为我认为我应该,如果我错了就纠正我),我如何在背景边界?
回答这些问题真的有助于我开始!谢谢!
答案 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)。您可以将所有帐户模型类保留在第一个文件中,它们都是一起生成的。但是为每个新模型类创建一个新文件。