Различные типы пользователей в ASP.NET Core 2.1 с использованием композиции - PullRequest
0 голосов
/ 23 ноября 2018

Сегодня я рассмотрел создание разных типов пользователей на основе наследования.

Как определить и использовать разные типы пользователей в 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 голосов
/ 23 ноября 2018

Вы можете обратиться к основным отношениям EF , чтобы установить отношение один к одному.

Измените 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...