Использование IList, List, ICollection для отношений 1 к n в EF Core - PullRequest
1 голос
/ 09 марта 2019

Как лучше всего определять отношения «один ко многим» в EF Core?

Рекомендуется ли вообще использовать списки, так как они предлагают больше функциональных возможностей? Тогда скорее интерфейс IList вместо List, так как он не определяет реализацию? Если это имеет значение, по каким критериям я должен выбрать один или другой?

Microsoft предлагает следующее https://docs.microsoft.com/en-us/ef/core/modeling/relationships

public class Blog
{
    public int BlogId { get; set; }
    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

Принимая во внимание

http://www.entityframeworktutorial.net/efcore/configure-one-to-many-relationship-using-fluent-api-in-ef-core.aspx

https://www.learnentityframeworkcore.com/configuration/one-to-many-relationship-configuration предложить ICollections

Является ли следующий ответ 2011 года действительным в EF Core?

https://stackoverflow.com/a/7655974/10148774

1 Ответ

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

Решение, которое вы должны выбрать, будет зависеть от того, какие операции вам нужно выполнить.

В общем, у вас есть три основных варианта:

  • IEnumerable <> для списка объектов, для которых требуется только итерация (без дополнительных операций, таких как модификация).
  • ICollection <> для списка объектов, которые необходимо перебрать и изменить.
  • Список <> для списка объектов, которые необходимо перебрать, изменить, отсортировать, получить доступ по индексу ...

Теперь вы можете подумать: поэтому я всегда буду использовать List, потому что он обеспечивает большую функциональность, но имейте в виду, что он требует больше всего времени, и хорошей практикой объектно-ориентированного программирования является программирование в направлении интерфейса, а не реализации. Реализации могут и будут меняться.

Затем вам нужно сбалансировать и проанализировать свой конкретный сценарий, чтобы сделать лучший выбор.

С уважением,

...