Можете ли вы иметь ICollection <int>вместе с ICollection <myobject>в Entity Framework? - PullRequest
0 голосов
/ 05 февраля 2012

Я знаю, что в рамках сущности вы можете сделать что-то вроде

public MyObject myObj {get;set;}
public int myObjId {get;set;}

, которое предоставляет мне доступ либо к ключу, либо к соответствующему объекту.Тем не менее, вы можете сделать что-то вроде для 1.M ассоциаций?

public ICollection<MyObject> myObj {get;set;}
public ICollection<int> myObjIds {get;set;}

Было бы очень полезно, если вы можете.

1 Ответ

1 голос
/ 05 февраля 2012

Нет, вы не можете. По крайней мере, в том смысле, что EF автоматически заполняет для вас коллекцию ключей при загрузке объекта из памяти (как в случае со свойствами внешнего ключа).

Но у вас есть два альтернативных варианта:

Вы можете создать свойство только для чтения:

public ICollection<MyObject> myObj {get;set;}
public IEnumerable<int> myObjIds
{
    get { return myObj.Select(o => o.Id); }
}

Для этого необходимо, чтобы вы уже загрузили коллекцию myObj или использовали отложенную загрузку.

Второй способ - явно загружать идентификаторы, когда они вам нужны:

IEnumerable<int> myObjIds = context.Parents
    .Where(p => p.Id == 1)
    .Select(p => p.myObj.Select(o => o.Id))
    .Single();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...