了解VS在首次运行时创建数据库的能力

时间:2012-03-06 20:30:25

标签: asp.net-mvc visual-studio-2010 ef-code-first

我正在使用下载的(.net4 / mvc3)解决方案文件(来自信誉良好的源),其中web.config中存在连接字符串,但我没有看到创建数据库的明确指令,并且没有包含'密度纤维板”。我第一次构建时遇到了关于缺少CREATE数据库权限的运行时错误。所以我创建了一个空白数据库,并确保该字符串引用了一个SQL用户,该用户对刚刚创建的数据库具有.dbo / owner权限。

但后续版本似乎没有执行相同的初始化db脚本 - 无论何时存储它。

创建数据库的“首次使用”约定在哪里记录?

THX

2 个答案:

答案 0 :(得分:0)

这是Entity Framework Code First的一个功能。我不确定你到底在寻找什么,但是搜索“EF Code First Initialization Strategy”可能有所帮助。

例如,阅读本文:EF Code First DB Initialization Using Web.Config

答案 1 :(得分:0)

我假设您正在讨论实体框架,它允许您从ObjectContext对象的实例创建数据库,该实例用于EF中的任何一种方法(数据库,模型和代码) -first)。

查找实际调用ObjectContext.CreateDatabase()的行。如果使用其中一个受支持的ADO.NET(SQL Server或SQL Server CE 4.0),则会生成所需的SQL语句。假设经典的Northwind示例,您可能会发现类似的内容:

NorthwindContext context = new NorthwindContext();
if (!context.DatabaseExists())
{
    context.CreateDatabase();
}

如果这实际上是代码优先的应用程序,“lalibi”对于初始化策略是正确的,默认情况下不要求您显式创建数据库。 (但我的猜测是,它实际上使用的内部声明与我的非常相似)。