Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以下方法或属性[Entity Framework Core][OnModelCreating]之间的调用不明确_C#_Entity Framework Core_Asp.net Identity_Dbcontext - Fatal编程技术网

C# 以下方法或属性[Entity Framework Core][OnModelCreating]之间的调用不明确

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

我使用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; }
}
公共类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)