Entity Framework - определение критериев для связанных записей - PullRequest
1 голос
/ 06 июля 2011

Я новичок в Entity Framework. :-)
У меня есть что-то похожее на следующее:

Мастер Стол
------------------------------------
Id: Name: Detail_id:
1 MasterOne 1
2 MasterTwo 2

Таблица сведений:
------------------------------------
Идентификатор: Имя: Тип:
1 Detail_1 1
2 Detail_2 1
3 Detail_3 2

Таблица сведений имеет флаг («Тип»), который различает типы записей.

Мой Мастер объект выглядит так:

Публичный класс Мастер
{
public int ID {get; задавать; }
публичная строка Name {get; задавать; }
общедоступный виртуальный IEnumerable <Detail> Details {get; задавать; }
}

Моя основная таблица должна загружать подробные записи, но ТОЛЬКО те, которые имеют флаг «1».

Моя проблема в том, что свойство IEnumerable Details извлекает ВСЕ подробные записи, тогда как мне нужно, чтобы оно извлекало только те подробные записи с флагом Type = 1.

Возможно ли это?
Спасибо !!

Ответы [ 2 ]

0 голосов
/ 06 июля 2011

Если вы используете EF 4.1

Если вы загружаете только 1 Master запись, вы можете загрузить отфильтрованный список Details следующим образом.

using (var context = new MyContext())
{
    var master = context.Masters.Find(1);

    context.Entry(master)
        .Collection(m => m.Details)
        .Query()
        .Where(d => d.Type == 1)
        .Load();

    //do stuff with master

}

Вы можете пройти через Используя DbContext в EF 4.1, Часть 6: Загрузка связанных сущностей , чтобы узнать больше об этом.

0 голосов
/ 06 июля 2011

Вы можете попробовать:

var master = (ctx.Masters.Where(x => x.ID == 1)).FirstOrDefault();
var details = master.Details.Where(x=>x.Type == 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...