ASP.NET Core 2.1中使用组合的不同用户类型

时间:2018-11-23 02:10:35

标签: c# asp.net-core asp.net-identity ef-migrations

今天,我探索了基于继承创建不同的用户类型。

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; }
    }
}

1 个答案:

答案 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);