Это подходящий способ определить отношения один ко многим - PullRequest
1 голос
/ 23 марта 2019

У меня есть две модели здесь.Собственность и Пользователь.Мне нужно создать отношения один ко многим здесь.Один пользователь может иметь много свойств.Каждое свойство имеет одного пользователя.

Я имею к соответствующей модели, связанной в моделях, как это.

Property.cs

public class Property
{
    public int Id { get; set; }
    public string Town { get; set; }
    public string County { get; set; }
    public User User { get; set; }
    public int UserId {get; set}
}

User.cs

public class User : IdentityUser<int>
{
    public ICollection<UserRole> UserRoles { get; set; }
    public Property Property { get; set; }
}

Будет ли это работать, или мне нужно написать построитель сущностей в моем методе onmodelcreate в файле контекста данных.

Спасибо заваша помощь.

Ответы [ 2 ]

1 голос
/ 23 марта 2019

Поскольку вы хотите, чтобы у вашего User было много свойств, вам нужно установить свойство Property в коллекцию.В противном случае это будет отношение один-к-одному.

public class User : IdentityUser<int>
{
    public ICollection<UserRole> UserRoles { get; set; }
    public ICollection<Property> Properties { get; set; }
}

И, поскольку вы хотите сразу использовать свою коллекцию свойств, вам нужно инициализировать ее в конструкторе.

public class User : IdentityUser<int>
{
    public User() {
         Properties = new List<Property>();
    }

    public ICollection<UserRole> UserRoles { get; set; }
    public ICollection<Property> Properties { get; set; }
}
1 голос
/ 23 марта 2019

То, что вы создали здесь, это отношения один-к-одному. Чтобы сделать это отношение один ко многим, вам нужно будет создать коллекцию свойств в модели User:

public class Property
{
    public int Id { get; set; }
    public string Town { get; set; }
    public string County { get; set; }
    public User User { get; set; }
    public int UserId {get; set; }
}

public class User : IdentityUser<int>
{
    public ICollection<UserRole> UserRoles { get; set; } = new List<UserRole>();

    // This must be a collection
    public ICollection<Property> Properties { get; set; } = new List<Property>();
}

Entity Framework автоматически создаст отношение с помощью приведенного выше кода (и будет делать это для других объектов в вашей модели, если вы подчиняетесь определенным соглашениям ), или вы можете явно определить их, используя Аннотации данных или Свободный API . Рекомендуется явно определять ваши отношения, а также другие свойства модели (например, ключи, длины строковых полей). Это поможет прояснить эти атрибуты в коде и гарантировать, что Entity Framework определяет модель в соответствии с вашими намерениями.

...