带有属性的产品类型

时间:2014-07-03 09:32:01

标签: c# entity-relationship entity-framework-6

希望有人可以帮助我。我正在尝试使用预定义类型的产品基础目录。因此,例如,存在一种简单类型和高级类型的产品,这些类型具有可配置属性。所以我有一个像下面这样的模型,但是我无法将值存储在与产品属性有关系的不同表中。

我在singel ProductDto对象下面添加了一个所需的json输出.Wehere 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; }
}

        {
    productType: {
    propertyTypeGroups: [
    {
    propertyTypes: [
    {
    propertyTypeValue: null,
    id: "88c1e9ed-7b03-e411-8ca5-74d4351a6e12",
    name: "Sample Property 1"
    },
    {
    propertyTypeValue: null,
    id: "89c1e9ed-7b03-e411-8ca5-74d4351a6e12",
    name: "Sample Property 2"
    }
    ],
    id: "87c1e9ed-7b03-e411-8ca5-74d4351a6e12",
    name: "Sample Group"
    }
    ],
    id: "85c1e9ed-7b03-e411-8ca5-74d4351a6e12",
    name: "Simple Product",
    alias: "simpleproduct"
    },
    id: "86c1e9ed-7b03-e411-8ca5-74d4351a6e12",
    name: "Sample Product 1"
    }

1 个答案:

答案 0 :(得分:0)

您可以在linq查询中明确包含导航属性,如下所示:

var productValue = this.Context.PropertyValues.Include(p => p.Product).FirstOrDefault(pv => pv.Id == someId);