Entity Framework Core 2 中的 ConnectionString 生成器

Posted

技术标签:

【中文标题】Entity Framework Core 2 中的 ConnectionString 生成器【英文标题】:ConnectionString Builder in Entity Framework Core 2 【发布时间】:2018-07-31 23:00:46 【问题描述】:

我正在尝试将旧项目 c# 转换为 asp net core 和 EF core 2.0,但我找不到 EntityConnectionStringBuilder。

public string GetEntityConnectionString(string databaseName, string metadata)

    string providerName = "System.Data.SqlClient";
    string providerString = GetConnectionString(databaseName);


    System.Data.Entity.Core.EntityClient.EntityConnectionStringBuilder entityBuilder =
    new System.Data.Entity.Core.EntityClient.EntityConnectionStringBuilder();

错误 CS0234 类型或命名空间名称“实体”不存在于 命名空间“System.Data”(您是否缺少程序集引用?)

【问题讨论】:

【参考方案1】:

您可以在 Context 上设置连接。尝试覆盖 OnConfiguring 方法:

    public class CommonDbContext : DbContext
    
        public CommonDbContext(DbContextOptions<CommonDbContext> options)
            : base(options)
        
        

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        
            optionsBuilder.UseSqlServer("Data Source=127.0.0.1;Initial Catalog=DBName;User ID=user;Password=pwd;Connection Timeout=60");
        
    

【讨论】:

【参考方案2】:

这是因为 EF Core 不支持旧 EF 版本的所谓“数据库优先”方法,因此没有 edmx 文件,因此没有使用 EF 特定的连接字符串(metadata=res:...EntityConnectionStringBuilder 类没有用处。

因此,在移植时,只需删除整个 GetEntityConnectionString 方法并改用 GetConnectionString 以及 UseSqlServerUsePgsql 和类似方法。

【讨论】:

以上是关于Entity Framework Core 2 中的 ConnectionString 生成器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Entity Framework Core 2 中播种?

在 Entity Framework Core 2.0 中执行存储过程

Entity Framework Core中更改跟踪工作原理

Entity Framework Core中更改跟踪工作原理

Entity Framework Core 2.1 中的 ReverseEngineeringGenerator

DetachedLazyLoadingWarning 的 Entity Framework Core 2.1 问题