将.net实体框架升级到EF Core似乎无法使用base和OnModelCreating

时间:2018-08-22 23:03:43

标签: c# entity-framework-core

我已经从.net 4.6应用程序升级到.net core 2.1.x,其中某些对象和方法不可用。

示例:

  1. 问题:base("name=mydbentities")
  2. OnModelCreating(DbModelBuilder modelBuilder)
  3. base:(nameOrConnectionString)

从旧的.net代码库开始,有2个局部类

public partial class OpsCentralEntities : DbContext
{
    public OpsCentralEntities() : base("name=OpsCentralEntities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }
}

在上面的代码中

  

错误CS1503参数1:无法从“字符串”转换为“ Microsoft.EntityFrameworkCore.DbContextOptions”

然后这个

  

'OpsCentralEntities.OnModelCreating(DbModelBuilder)':未找到合适的方法来覆盖

然后与另一个局部类

public partial class OpsCentralEntities : IDbContext
{
    public OpsCentralEntities(string nameOrConnectionString)
        : base(nameOrConnectionString)
    { }
    ....
}
  

无法从“字符串”转换为“ Microsoft.EntityFrameworkCore.DbContextOptions”

1 个答案:

答案 0 :(得分:1)

可以进行模型创建

OnModelCreating(DbModelBuilder modelBuilder) -> OnModelCreating(ModelBuilder modelBuilder) 

构造函数参数接受选项

base("name=mydbentities")-> YourContextContext(DbContextOptions options) : base(options)

如果您使用SqlQuery将会出现问题,因为现在您需要add it to model

modelBuilder.Query<YourModel>() //to OnModelCreating(ModelBuilder modelBuilder)

db.Query<YourModel>().FromSql(rawSql)

我遇到的最后一个问题是be using Extra type