Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用组合的ASP.NET Core 2.1中的不同用户类型_C#_Asp.net Core_Asp.net Identity_Entity Framework Migrations - Fatal编程技术网

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

C# 使用组合的ASP.NET Core 2.1中的不同用户类型,c#,asp.net-core,asp.net-identity,entity-framework-migrations,C#,Asp.net Core,Asp.net Identity,Entity Framework Migrations,今天,我探索了如何基于继承创建不同的用户类型 在探索解决方案之后,我了解到另一种方法是使用组合而不是继承 问题是,现在当我运行初始迁移时,返回以下错误: 无法为“Type1.User”和“AppUser.Type1”之间的一对一关系确定子/从属方。要标识关系的子/依赖方,请配置外键属性。如果这些导航不应属于同一关系的一部分,请在不指定反向的情况下对其进行配置 问题:如何使用以下组合创建不同类型的用户 AppUser.cs using Microsoft.AspNetCore.Identity;

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

在探索解决方案之后,我了解到另一种方法是使用组合而不是继承

问题是,现在当我运行初始迁移时,返回以下错误:

无法为“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; }
    }
}
namespace MyApp.Models
{
    public class Type1
    {
        public int Type1Id { get; set; }
        public string Property1 { get; set; }
        public AppUser AppUser { get; set; }
    }
}
类型1.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; }
    }
}
namespace MyApp.Models
{
    public class Type1
    {
        public int Type1Id { get; set; }
        public string Property1 { get; set; }
        public AppUser AppUser { get; set; }
    }
}
您可以参考设置一对一关系

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

您可能需要粘贴一些注释来说明哪个是FKID。您可以提供一个示例吗?[ForeignKey(“YourFkId”)]
使用System.ComponentModel.DataAnnotations.Schema谢谢。但我不确定我应该将此应用于哪个属性。