【问题标题】:ASP.NET MVC 4 / SimpleMembership questions from a CakePHP guy来自 CakePHP 家伙的 ASP.NET MVC 4 / SimpleMembership 问题
【发布时间】:2012-11-15 12:53:30
【问题描述】:

我对 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)是否应该与我为模型创建的上下文分开?

如果我想拥有从 Job 到 User(例如 Poster 和 Taker)的多个“导航属性”(正确使用?),我会这样做吗?

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

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

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

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

【问题讨论】:

  • ASp.net MVc4 与 asp.net mvc 3 几乎相同,即 99% 的 mvc 3 在 mvc 4 中。在您的位置,我会忘记 EF 和预定义的成员资格,因为它们非常在 asp.net 世界中是可选的。是的,它们可以帮助您快速安装应用程序,仅此而已。坦率地说,我认为 micro-orm 更容易让您使用,因为它更接近 php pdo 方式。如果您要超越拖放操作,则 EF 或任何其他 ORM 都很难学习

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


【解决方案1】:

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

Job.cs

应用程序.cs

MyContext.cs

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

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

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

【讨论】:

    猜你喜欢
    • 2015-01-26
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    相关资源
    最近更新 更多