#c# #entity-relationship #entity-framework-6
#c# #сущность-отношение #сущность-фреймворк-6 #entity-framework-6
Вопрос:
Надеюсь, кто-нибудь сможет мне помочь. Я пытаюсь использовать базовый каталог продукта с предопределенным типом. Так, например, существует простой тип и расширенный тип продуктов, эти типы имеют настраиваемые свойства. Итак, у меня есть мои модели, подобные приведенным ниже, но я не могу получить значение, хранящееся в другой таблице с отношением к свойству en product.
Ниже я добавил желаемый вывод json для объекта singel ProductDto.. Здесь PropertyTypeValue должно быть значением свойства, указанного в продукте.
Надеюсь, я правильно это объяснил.
[Table("Product")]
public class ProductDto
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public Guid Id { get; set; }
public string Name { get; set; }
public virtual ProductTypeDto ProductType { get; set; }
}
[Table("ProductType")]
public class ProductTypeDto
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public Guid Id { get; set; }
public string Name { get; set; }
public virtual ICollection<PropertyTypeGroupDto> PropertyTypeGroups { get; set; }
}
[Table("PropertyTypeGroup")]
public class PropertyTypeGroupDto
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public Guid Id { get; set; }
public string Name { get; set; }
public virtual ProductTypeDto ProductType { get; set; }
public virtual ICollection<PropertyTypeDto> PropertyTypes { get; set; }
}
[Table("PropertyType")]
public class PropertyTypeDto
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public Guid Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual PropertyTypeGroupDto PropertyTypeGroup { get; set; }
}
[Table("PropertyValue")]
public class PropertyValueDto
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public Guid Id { get; set; }
public string Value { get; set; }
public virtual ProductDto Product { get; set; }
public virtual PropertyTypeDto PropertyType { get; set; }
}
{ Тип продукта: { Группы типов свойств: [ { Типы свойств: [ { propertyTypeValue: значение null, идентификатор: "88c1e9ed-7b03-e411-8ca5-74d4351a6e12", имя: "Пример свойства 1" }, { propertyTypeValue: значение null, идентификатор: "89c1e9ed-7b03-e411-8ca5-74d4351a6e12", имя: "Пример свойства 2" } ], идентификатор: "87c1e9ed-7b03-e411-8ca5-74d4351a6e12", название: "Группа образцов" } ], идентификатор: "85c1e9ed-7b03-e411-8ca5-74d4351a6e12", название: "Простой продукт", псевдоним: "simpleproduct" }, идентификатор: "86c1e9ed-7b03-e411-8ca5-74d4351a6e12", название: "Образец продукта 1" }
Ответ №1:
Вы можете явно включать свойства навигации в свои запросы linq следующим образом:
var productValue = this.Context.PropertyValues.Include(p => p.Product).FirstOrDefault(pv => pv.Id == someId);