我用我的数据库模型创建了一个.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如何处理呢?
答案 0 :(得分:0)
如果我理解正确,那么您必须从ASP的IdentityUser继承的部分带来不便: class ApplicationUser:IdentityUser {}
您使用的是哪个版本的ASP.NET MVC? 在较新的版本中,似乎不能从IdentityUser继承。 如果您不从IdentityUser继承,则可以将ApplicationUser移动到.net标准库。