Есть симулированные вопросы с ответами, которые не работают в моей ситуации.
Я получаю
Невозможно создать постоянное значение типа '.Model.featureoptions».В этом контексте поддерживаются только примитивные типы (такие как Int32, String и Guid).
Использование Entity First, EntityFramework 4.1, MVC3, C # 4.
vehicles
таблица данных транспортных средств, owners
таблица владельцев транспортных средств.vehicles
и owners
являются внутренними соединениями, и это работает.
features
таблица представляет собой список дополнительных функций, например, люк на крыше, окраска и т. Д. featureOptions
представляет собой список доступных параметров для функции,например, краска может быть «перламутровой», «матовый», а люк на крыше - «всплывающее стекло», «заголовок + слайд».
vehicleFeatures
- это список выбранных опций для автомобиля, в частностиАвтомобиль может иметь ноль или одну запись.
В этом запросе feature1
должно быть null
или выбранное значение для функции (т. е. выбранная опция люка в крыше) и feature2
должно быть null
или выбранное значение для другой функции (например, выбранный параметр рисования)
var query = (from v in _entities.vehicles
join o
in _entities.owners
on v.OwnerID equals o.OwnerID
// Some more inner joins
select new
{
// <code snipped >
// o. fields and v. fields
// </ code snipped>
feature1 = (from feature1
in _entities.vehiclefeatures
.Where ( f_1 => f_1.VehicleID == v.VehicleID)
join feature1_fo
in _entities.featureoptions
on feature1.FeatureOptionID equals feature1_fo.FeatureOptionID
join feature1_f
in _entities.features
.Where (bt_f => bt_f.CodeEnum==1)
on feature1_fo.FeatureID equals feature1_f.FeatureID
select new featureoptionsDTO () { Option = feature1_fo.Option }
),
feature2 = (from feature2
in _entities.vehiclefeatures
.Where(f_2 => f_2.VehicleID == v.VehicleID)
join feature2_fo
in _entities.featureoptions
on feature2.FeatureOptionID equals feature2_fo.FeatureOptionID
join feature2_f
in _entities.features
.Where(feature2_f => feature2_f.CodeEnum == 2)
on feature2_fo.FeatureID equals feature2_f.FeatureID
select new featureoptionsDTO() { Option = feature2_fo.Option }
)
}
);
foreach (var vehicle in query) // Exception here
{
}
feature1 = (from ..
и
feature2 = (from ..
вызывают
Невозможно создать постоянное значение типа '.Model.featureoptions'.В этом контексте поддерживаются только примитивные типы (такие как Int32, String и Guid).
Я понимаю, что LINQ пытается создать объект, как я могу получить его для создания анонимного(или собственный класс) вместо этого?