将 .Net Core Identity 与通用存储库一起使用
Using .Net Core Identity with generic repository
所以我现在正尝试着解决这个问题,但我似乎没有成功。在我的应用程序中,我使用了带有 Entity Framework Core 的通用存储库。
因此,我的存储库总是期望从 class 访问它,该 class 是 BaseEntity 或继承自某个 class。
现在我想用它来实现 .Net Core Identity。但是我的用户 class 继承自 BaseEntity。但我想我还需要它从 Identity 继承才能使其正常工作。我怎样才能继续使用身份?
C# 只支持单继承。您不能继承两个不同的 classes。此外,您的身份用户 class、 必须 继承自 IdentityUser
。你别无选择。因此,您能做的最好的事情就是让您的用户 class 和实体的其余部分 class 实现相同的接口,即 IEntity
。然后,不要将泛型类型限制为 BaseEntity
,而是使用 IEntity
。
当然,这意味着您将产生一些代码重复,因为您必须在 BaseEntity
和您的用户 class 上分别实施 IEntity
。然而,这是不可避免的。
所以我现在正尝试着解决这个问题,但我似乎没有成功。在我的应用程序中,我使用了带有 Entity Framework Core 的通用存储库。 因此,我的存储库总是期望从 class 访问它,该 class 是 BaseEntity 或继承自某个 class。 现在我想用它来实现 .Net Core Identity。但是我的用户 class 继承自 BaseEntity。但我想我还需要它从 Identity 继承才能使其正常工作。我怎样才能继续使用身份?
C# 只支持单继承。您不能继承两个不同的 classes。此外,您的身份用户 class、 必须 继承自 IdentityUser
。你别无选择。因此,您能做的最好的事情就是让您的用户 class 和实体的其余部分 class 实现相同的接口,即 IEntity
。然后,不要将泛型类型限制为 BaseEntity
,而是使用 IEntity
。
当然,这意味着您将产生一些代码重复,因为您必须在 BaseEntity
和您的用户 class 上分别实施 IEntity
。然而,这是不可避免的。