Asp.net core mvc 在通用存储库中使用.Net核心标识

Asp.net core mvc 在通用存储库中使用.Net核心标识,asp.net-core-mvc,entity-framework-core,asp.net-core-identity,Asp.net Core Mvc,Entity Framework Core,Asp.net Core Identity,所以我现在正试着想办法解决这个问题,但我似乎没有成功。在我的应用程序中,我使用的是具有实体框架核心的通用存储库。 因此,我的存储库总是希望从属于BaseEntity的类或从该类继承的类访问它。 现在我想用它实现.Net核心标识。但我的用户类是从BaseEntity继承的。但我也需要它继承自身份,以使其工作,我想。我怎样才能继续使用Identity?C#只支持单一继承。不能从两个不同的类继承。此外,您的Identity user类必须继承自IdentityUser。你别无选择。因此,您所能做的就是

所以我现在正试着想办法解决这个问题,但我似乎没有成功。在我的应用程序中,我使用的是具有实体框架核心的通用存储库。 因此,我的存储库总是希望从属于BaseEntity的类或从该类继承的类访问它。 现在我想用它实现.Net核心标识。但我的用户类是从BaseEntity继承的。但我也需要它继承自身份,以使其工作,我想。我怎样才能继续使用Identity?

C#只支持单一继承。不能从两个不同的类继承。此外,您的Identity user类必须继承自
IdentityUser
。你别无选择。因此,您所能做的就是让您的用户类和其他实体类实现相同的接口,即
IEntity
。然后,不要将泛型类型约束为
BaseEntity
,而是使用
IEntity


当然,这意味着您将产生一些代码重复,因为您必须在
BaseEntity
和您的用户类上分别实现
IEntity
。但是,这是不可避免的。

我是否仍然能够使用通用存储库中的通用方法,如DbContext.Set().FindAsync(id)这样做。如果我将where:BaseEntity更改为where:class,我似乎找不到一种方法。我想这必须做到,而且要保持一致性