今天,我探索了基于继承创建不同的用户类型。
How to Define and use Different User Types in ASP.NET Core
探索解决方案后,我了解到另一种方法是使用组合而不是继承。
问题是,现在当我运行初始迁移时,会返回以下错误:
无法确定'Type1.User'和'AppUser.Type1'之间的一对一关系的子/从属侧。要标识关系的子级/从属端,请配置外键属性。如果这些导航不应成为相同关系的一部分,请在不指定反向关系的情况下进行配置。
问题:如何使用以下组合创建不同类型的用户?
AppUser.cs
using Microsoft.AspNetCore.Identity;
namespace MyApp.Models
{
public class AppUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Type1 Type1 { get; set; }
}
}
Type1.cs
namespace MyApp.Models
{
public class Type1
{
public int Type1Id { get; set; }
public string Property1 { get; set; }
public AppUser AppUser { get; set; }
}
}
答案 0 :(得分:0)
您可以参考EF core relationships设置一对一关系。
将Type1.cs
更改为以下代码,然后添加迁移。
public class Type1
{
public int Type1Id { get; set; }
public string Property1 { get; set; }
public string AppUserId {get;set;}//As foreign Key
public AppUser AppUser { get; set; }
}
在Register.cshtml.cs
中创建具有特定类型的用户。
var user = new AppUser {
UserName = Input.Email,
Email = Input.Email,
Type1= new Type1{ Property1="Admin"}
};
var result = await _userManager.CreateAsync(user, Input.Password);