MVC 4 SimpleMembership - 第一次就做对了

时间:2013-09-14 21:25:57

标签: asp.net asp.net-mvc entity-framework asp.net-mvc-4

民间,

我刚开始设计一个新的网络项目。从VS2012开始,我创建了一个新的Internet网站项目。它附带了一个已经包含几个表格的数据库。这很好。

现在,我需要使用一些新表扩展数据库,并使用几个新字段更新UserProfile。但是,由于这将是一个新的数据库,我不想启用迁移步骤并添加实际上不需要的代码膨胀。

以下是我找到的解决方法:

  1. 根据需要使用新字段扩展UserProfile。
  2. 在AccountModels.cs中添加新表。例如,

    [表( “项目”)]  公共类物品{     ...  }

  3. 对于每个新表,将一个DbSet字段添加到AccountModels.cs中的UsersContexts类。

    公共类UserContext:DbContext {

     ...
     public DbSet<Items> Items {get; set; }
    

    }

  4. 删除原始数据库文件,创建一个具有相同名称的新数据库文件,然后运行该应用程序。

  5. 瞧。新数据库充满了所有表格。

    这是正确的方法吗?

    虽然它有效,但我不确定第3步。我想知道框架需要知道需要创建一个新表,并且实际上向UserContext添加一个新字段会触发新表的创建。这种做法是对的吗?

    提前感谢您的帮助。

    的问候,
    彼得

1 个答案:

答案 0 :(得分:0)

通过不使用代码优先迁移,手动删除数据库是您可以做的最好的事情。还有DropCreateDatabaseIfModelChanges初始化程序,但要小心不要在应用程序的发行版中使用它。

我还建议在单独的cs文件中编写DbContext。当你使用流畅的api配置EF关系(我会做什么)时,它会变得非常大。考虑在解决方案变得更大时将DAL和模型放在单独的项目中。对一个db使用多个上下文也会导致问题,因此将其命名为SomeAppContext会更好。