ASP.NET Core 1.0 Identity 3 & BaseEntity



我正在尝试扩展标识3,以便将主键用作整数和我的自定义表。问题是,我希望我的所有数据库类都从BaseEntity类派生,但ApplicationUser实体被迫从IdentityUser<int>派生。

我需要BaseEntity来实现我的通用存储库模式和DbContext

这实际上是我想做的,但C#不支持多类继承:

public class User : BaseEntity, IdentityUser<int>
{
}

public abstract  class BaseEntity
{
    public int Id{ get; set; }
   //Some extra logic
}

你知道这个吗?

我可以用一个以某种方式封装IdentityUser<int>的接口来实现它吗?

基本上您可以做到这一点,因为Identity Framework的基础是而不是绑定到IdentityUser<T>类型。Identity<T>仅在Microsoft.AspNet.Identity.EntityFramework包中使用。

正如您在Microsoft.AspNet.Identity.EntityFramework的GitHub存储库中看到的,IdentityUser<T>仅在那里实现。你基本上可以派生它,在那里实现你的基类,并将其用作你的类。

否则,您必须自己实现所有的存储才能使用新的基类。Microsoft.AspNet.Identity的基不依赖于这样的类,所有泛型类都有where TUser : class,这意味着它可以与任何类一起使用。

如果你不想实现自己的基于身份的实现,一个更简单的解决方案是使用一个接口:

然后你的User类将看起来像这个

public class IBaseEntity 
{
    int Id { get; set; }
}
public class User : IdentityUser<int>, IBaseEntity
{
    public int Id { get; set; }
}

相关内容

  • 没有找到相关文章

最新更新