Entity Framework如何处理接口?

时间:2017-04-29 16:01:19

标签: c# asp.net entity-framework xamarin .net-standard

我用我的数据库模型创建了一个.net标准库,所以我可以在asp.net核心应用程序和Xamarin中使用它,因为我想从我的web api(在asp中)获取/发布数据到手机应用程序(xamarin)

所以我成功地使它成功了!但问题是Xamarin不支持身份,所以为了解决这个问题,我引入了自己的接口IUser,并在我的模板中使用它。

这是asp.net部分用户的一个例子

namespace WebApp {
   public class ApplicationUser : IdentityUser, IUser { /*some code*/ }

   public class ApplicationDbContext : IdentityDbContext< ApplicationUser > {
      public DbSet< Event<ApplicationUser>> Events { get; set; }
   }
}

我使用泛型来使所有的东西在库中工作:

namespace Models {
  public interface IUser{
      string Id { get; set; }
      string UserName { get; set; }
      string Email { get; set; }
  }

public class Event <TUser> where TUser : IUser{
    public virtual int Id { get; set; }

    [Required, MinLength( DomainConstraints.EventNameMinLen )]
    public virtual string Name { get; set; }

    [Required]
    public virtual string Description { get; set; }

    [Required]
    public virtual string ApplicationUserId { get; set; }

    public virtual TUser ApplicationUser { get; set; } //creator of the event
}
}

每次我需要在asp.net中编写Event<ApplicationUser>而在Xamarin中编写Event<User>时,是否有更好的方法来使用它?也许只有接口,但是EF如何处理呢?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您必须从ASP的IdentityUser继承的部分带来不便: class ApplicationUser:IdentityUser {}

您使用的是哪个版本的ASP.NET MVC? 在较新的版本中,似乎不能从IdentityUser继承。 如果您不从IdentityUser继承,则可以将ApplicationUser移动到.net标准库。

MVC 5: Should I inherit my User from IdentityUser class?