C# 以下方法或属性[Entity Framework Core][OnModelCreating]之间的调用不明确
我使用EF Core,在我的C# 以下方法或属性[Entity Framework Core][OnModelCreating]之间的调用不明确,c#,entity-framework-core,asp.net-identity,dbcontext,C#,Entity Framework Core,Asp.net Identity,Dbcontext,我使用EF Core,在我的dbcontext类中,我已经重写了onModelCreating方法,将类中的一个属性配置为在SQL Server中自动递增 这是我的DbContext类: public class AppDbContext:IdentityDbContext<AppUser> { public AppDbContext(DbContextOptions options) : base(options) { } public AppDb
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; }
}
公共类AppDbContext:IdentityDbContext
其他信息
我在我的解决方案中引用了另一个项目,这个项目将扮演存储库的角色,他准备使用SQL Server、Oracle和MySQL
我所依赖的项目是我自己的项目,它是开源的
请提供任何帮助以解决此问题?我想您不能仅使用以下两种方法中的一种来解决问题。
因为这些方法是扩展方法(所以是静态方法),所以可以将它们用作静态方法:
Microsoft.EntityFrameworkCore.OraclePropertyBuilderExtensions.UseIdentityColumn(builder.Entity<Service>().Property(service => service.ID), 1, 1);
然后
UseIdentityColumn(builder.Entity().Property(service=>service.ID),1,1)
我知道它没有流畅的书写方式那么漂亮,但是如果你需要使用它,我认为没有其他选择
(我假设您想保留Oracle版本)目前,我使用SQL Server,但您的回答是帮助并同时使用SQL Server或Oracle,非常感谢:-)但是您是否需要将SQL Server和Oracle的使用放在同一个文件中?将来我可能需要它,但我已经创建了自己的跨RDBMS通用存储库项目,不知道为什么这个问题被否决了。显然,这不是OP代码中的缺陷,而是EF核心设计。它们使用公共名称空间,并在您向具体数据库提供程序添加引用时添加扩展方法。最初,该指南提供了在自己的特定扩展方法前面加上名称的前缀,如ForSqlServerXyz
,ForMySqlXyz
,ForOracleXyz
等,这很好。然后他们决定删除前缀并使用通用名称,结果如下。人们真的应该去他们的GitHub报告/抱怨这些事情。
using static Microsoft.EntityFrameworkCore.OraclePropertyBuilderExtensions;
UseIdentityColumn(builder.Entity<Service>().Property(service => service.ID), 1, 1)