c# - Entity Framework 初始化最佳实践

标签 c# entity-framework

我希望确保 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/

相关文章:

c# - 如何将位图像素复制到其他位图,在 C# 中保留 alpha 透明度?

c# - Hololens 中的 DLL 与 IL2CPP 后端发生冲突

entity-framework - EntityFunctions.TruncateTime 和单元测试

c# - 按索引从 IQueryable<anonymous> 列表中获取元素

c# - 从 UWP 应用程序请求永久访问文件夹

c# - 嵌套 MySQL 查询的解决方法?

c# - 从 aspx 页面上的按钮调用类

c# - Entity Framework 中的分组和计数

c# - 使用 Entity Framework 异步删除行

c# - Entity Framework 4.2“该类型不具有 EdmEntityTypeAttribute 属性,但包含在具有 EdmSchemaAttribute 属性的程序集中