我希望确保 Entity Framework 永远不会覆盖或尝试创建我正在连接的数据库。它是以前由 ASP 网站(visual basic script flavor)访问的已建立的数据库。我见过像这样将“name=”传递给基本构造函数的约定...
//example 1
public class SchoolDBContext: DbContext
{
public SchoolDBContext() : base("name=SchoolDBConnectionString")
{
}
}
但我宁愿不对其进行硬编码(如上所示),所以也许......
//example 2
public SchoolDBContext(string ConnectionString) : base("name=" + ConnectionString) {
}
但我也希望能够在字符串为空时出错...
//example 3
public SchoolDBContext(string ConnectionString) : {
if (string.IsNullOrWhitespace(ConnectionString) throw Exception("empty connection string");
base("name=" + ConnectionString);
}
问题 1:我不确定第三段代码是否与第二段代码完成相同的工作,是吗?作为第三个例子,可以先调用无参数构造,然后再调用带有 "name="
的 base问题 2:构造函数中是否有可用选项可用于更稳健地配置 EntityFramework?
我正在使用 EF 6
最佳答案
如果您不希望 EF 覆盖 och,请在每次需要添加 createinitializer 类时创建一个新数据库。
public class CreateInitializer : CreateDatabaseIfNotExists<SchoolDBContext>{}
关于c# - Entity Framework 初始化最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42158891/