【问题标题】:ConnectionString Builder in Entity Framework Core 2Entity Framework Core 2 中的 ConnectionString 生成器
【发布时间】: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”(您是否缺少程序集引用?)
【问题讨论】:
标签:
c#
entity-framework-core
【解决方案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 以及 UseSqlServer、UsePgsql 和类似方法。