c# - 以下方法或属性 [ Entity Framework Core ] [ OnModelCreating ] 之间的调用不明确
问题描述
我使用 EF Core,在我的dbcontext
类中,我重写了onModelCreating
将类中的一个属性配置为在 SQL Server 中自动递增的方法。
这是我的DbContext
课:
public class AppDbContext:IdentityDbContext<AppUser>
{
public AppDbContext(DbContextOptions options) : base(options)
{
}
public AppDbContext()
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<Service>()
.Property(service => service.ID)
.UseIdentityColumn(1, 1);
}
public virtual DbSet<AppUser> AppUsers { get; set; }
public virtual DbSet<Service> Services { get; set; }
}
如果你注意到我的DbContext
类是继承自IdentityDbContext
因为我使用身份。
问题:我收到此错误:
CS0121
以下方法或属性之间的调用不明确:“Microsoft.EntityFrameworkCore.OraclePropertyBuilderExtensions.UseIdentityColumn(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder, int, int)”和“Microsoft.EntityFrameworkCore.SqlServerPropertyBuilderExtensions.UseIdentityColumn(Microsoft.EntityFrameworkCore. Metadata.Builders.PropertyBuilder, int, int)'
附加信息
我在我的解决方案中引用了另一个项目,这个项目将扮演存储库的角色,并且他准备使用 SQL Server、Oracle 和 MySQL。
我所依赖的项目是我自己的项目,它是开源的,即存储库链接
请帮助解决这个问题?
解决方案
我想你不能只删除两个有问题的使用之一。由于这些方法是扩展方法(所以是静态方法),您可以将它们用作静态方法:
Microsoft.EntityFrameworkCore.OraclePropertyBuilderExtensions.UseIdentityColumn(builder.Entity<Service>().Property(service => service.ID), 1, 1);
或使用静态导入:
using static Microsoft.EntityFrameworkCore.OraclePropertyBuilderExtensions;
然后
UseIdentityColumn(builder.Entity<Service>().Property(service => service.ID), 1, 1)
我知道它不如流畅的书写方式漂亮,但我认为如果你需要所有的使用方式,我认为没有其他选择。
(我假设你想保留 Oracle 的)
推荐阅读
- android - 网站如何知道我是从 android 运行的
- ios - 特定特征的 BLE ReadValue 引发“资源不足错误”
- python - 使用简单方法获取的 Django DetalView
- jenkins - 如果文件夹中没有任何内容,则 Jenkins Pipeline Exit
- sql-server - 在我的执行 sql 任务中添加了 SSIS 额外引号
- httpclient - HttpClient 和 Polly 延迟 14 秒
- c# - 从 Web 应用程序中的第二个智能卡读卡器读取数据
- php - 从 ms word 复制过去到 WordPress 问题
- r - 如何减去列表中的连续数字
- python - Python 脚本未从终端运行 [添加到 PATH 后]