Asp.net mvc SQL实例上的实体框架

Asp.net mvc SQL实例上的实体框架,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我看过的每个EF教程都要求在EF的代码优先方法中使用LocalDB或SQLExpress 有没有一种方法可以使用code first EF连接到传统的SQL DB(2014)实例,并让EF在DB中创建模式?或者在切换到生产模式时,我必须连接到具有现有匹配模式的数据库吗 出于开发目的使用LocalDB是可以的,但在部署到生产环境时,我希望插入一个实际的和现有的SQL DB。有没有一种方法可以做到这一点,而不用插入一个数据库,该数据库的模式是手动创建的,以匹配EF模型?我会尝试使用Entity Fr

我看过的每个EF教程都要求在EF的代码优先方法中使用LocalDB或SQLExpress

有没有一种方法可以使用code first EF连接到传统的SQL DB(2014)实例,并让EF在DB中创建模式?或者在切换到生产模式时,我必须连接到具有现有匹配模式的数据库吗


出于开发目的使用LocalDB是可以的,但在部署到生产环境时,我希望插入一个实际的和现有的SQL DB。有没有一种方法可以做到这一点,而不用插入一个数据库,该数据库的模式是手动创建的,以匹配EF模型?

我会尝试使用Entity Framework的代码优先迁移()

简短版本:

1) 在DbContext中,将初始值设定项设置为CreateDatabaseIfNotExists,类似于
Database.SetInitializer(new CreateDatabaseIfNotExists())

如果不存在数据库(第一次运行应用程序),这将允许EF创建DB

2) 接下来,转到Package Manager控制台,选择数据库项目(如果单独),然后输入命令
启用迁移
。这将创建一些迁移脚手架和初始迁移

此后,无论何时在代码中更改数据库模型,请执行以下步骤:

3) 更改代码优先模型后,转到Package Manager控制台,选择数据库项目,然后键入命令
Add Migration Migration name here
这将生成一个新的单独迁移,可以应用于数据库。注意,此命令将针对当前连接字符串配置中的任何db运行

4) 要应用迁移并将数据库更新到新架构,请键入命令
updatedatabase
。如果一切顺利,您的数据库将(使用数据)更新为新模式!您现在应该能够在没有数据库错误的情况下运行MVC项目

请记住,这是db迁移的最基本版本,请先在虚拟项目上试用,当然还要备份数据。如果更改很复杂,或者需要执行特殊的数据迁移,则可以在执行更新数据库之前,在创建的迁移文件夹中编辑脚手架迁移代码


希望这有帮助

express和普通安装之间没有区别,您是否尝试过将连接字符串设置为真实的数据库并查看发生了什么?我尝试过连接到SQL DB的localhost实例,它工作正常,但是如果我更新模型,它会断开,因为DB模式不是由EF自动更新的(我必须去Mgmt Studio调整模式以匹配EF模型)。如何更新LocalDb数据库的模式?请显示一些代码,说明如何设置初始化策略。(您有
Seed()
)@DavidG,我没有使用LocalDb(试图使其与localhost上的常规SQL DB实例一起工作),但我相信它会从模型类创建LocalDb模式。@ScottChamberlain,我不是在任何地方调用
Seed()
,我只是创建一个测试对象并插入它,然后调用
dbContext.SaveChanges()
。如果对象的字段不在DB模式中,它将抛出和异常,而不是删除表/DB并自动创建模式以匹配模型类。