1

当我尝试将新对象添加到导航集合导航属性时,我收到此错误可能未设置。

这是我的 POCO:

 public class Category : BaseEntity,IDeletable
{
    public Category()
    {
        Products = new List<Product>();
        ChildCategories = new List<Category>();
    }


    [Required]
    [Display(ResourceType = typeof(DelkaShop.Entities.EntityText.EntityText), Name = "EntityName")]
    public String Name { get; set; }

    [Display(ResourceType = typeof(DelkaShop.Entities.EntityText.EntityText), Name = "ParentCategory")]
    public int? ParentCategoryId { get; set; }

    [Display(ResourceType = typeof(DelkaShop.Entities.EntityText.EntityText), Name = "ItemsPerPage")]
    public int? ItemsPerPage { get; set; }

    [InverseProperty("Categories")]
    public ICollection<Product> Products { get; set; }

    [ForeignKey("ParentCategoryId")]
    [Display(ResourceType = typeof(DelkaShop.Entities.EntityText.EntityText), Name = "ParentCategory")]
    public  Category ParentCategory { get; set; }

    public  ICollection<Category> ChildCategories { get; set; }

}

在微风中,我正在做类似 product.Categories.push(newCategoryObject);

有人可以指出我正确的方向吗?

编辑:我忘了提到我在多对多关系中遇到了这个错误,只是在文档中读到这还不支持。

有没有解决方法?

4

1 回答 1

3

恐怕唯一的解决方法是将两种类型之间的映射公开为自己的实体。

正如我在其他地方所说,我不喜欢将映射对象隐藏在 EF m-to-m 关联后面。这种伪装似乎总是造成比其价值更多的麻烦。映射获得有效负载的那一刻——链接日期、版本、租户标识符——任何东西——m-to-m 分崩离析,必须定义映射对象。根据我的经验,那个“时刻”迟早会到来。它出现的越晚,它造成的麻烦就越多。所以我建议在成本低的时候把它暴露出来。这对你来说可能吗?

于 2013-02-16T20:37:43.000 回答