Это разрушает мою жизнь уже несколько дней, время спросить ...
Я использую Entity Framework 4.0 для своего приложения.
Местоположение (например, домили офис) имеет один или несколько объектов (например, ванную комнату, спальню, стол для снукера и т. д.)
Я хочу отобразить список флажков на странице местоположения со списком объектов флажков, с отмеченнымичто местоположение в настоящее время имеет.
Моя модель представления для объектов выглядит следующим образом ...
public class FacilityViewItem
{
public int Id { get; set; }
public string Name { get; set; }
public bool Checked { get; set; }
}
Так что, когда я передаю модель представления местоположения в пользовательский интерфейс, я хочу передатьList<T>
объектов, где T имеет тип FacilityViewItem.
Чтобы получить объекты, которые уже есть у местоположения, просто - я делаю запрос, используя Location.Facilities, который возвращает EntityCollection, где T имеет тип Facility.Это потому, что Услуги - это свойство навигации ....
var facs = from f in location.Facilities
select new FacilityViewItem()
{
Id = f.FacilityId,
Name = f.Name,
Checked = true
};
Так вот в чем моя проблема - мне нужны остальные объекты, те, которых у Локации нет.
Я пытался использовать Except () и Any () и Contains (), но я получаю ту же ошибку.
Примеры запросов, которые не работают ...
var restOfFacilities = from f in ctx.Facilities
where !hasFacilities.Contains(f)
select new FacilityViewItem()
{
Id = f.FacilityId,
Name = f.Name
};
var restOfFacilities = ctx.Facilities.Except(facilitiesThatLocationHas);
var notFacs = from e in ctx.Facilities
where !hasFacilities.Any(m => m.FacilityId == e.FacilityId)
select new FacilityViewItem()
{
Id = e.FacilityId,
Name = e.Name
};
Иошибка, которую я получаю с каждой реализацией ...
System.NotSupportedException не обработан. Message = Невозможно создать постоянное значение типа 'Chapter2ConsoleApp.Facility'.В этом контексте поддерживаются только примитивные типы (такие как Int32, String и Guid).
Что я здесь пропускаю?