我有一个自引用的实体类别,它有子类别。它工作得很好。
现在我想实现一个 JsTree 助手,但是因为我有另一个使用类似结构的不同项目(类别是两个项目中 100% 相似的实体),所以我想在类库中实现助手并使其对两者都可用。
这是实体框架生成的代码,这里没有变化:
[EdmEntityTypeAttribute(NamespaceName="MyModel", Name="Category")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Category : EntityObject
{
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("MyModel", "FK_Categories_Categories", "Categories1")]
public EntityCollection<Category> Subcategories
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<Category>("WebDirectoryModel.FK_Categories_Categories", "Categories1");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<Category>("MyModel.FK_Categories_Categories", "Categories1", value);
}
}
}
}
这是我写的界面:
public interface ICategory
{
System.Int32 CategoryId { get; set; }
System.String DefaultName { get; set; }
EntityCollection<ICategory> Subcategories { get; set; }
}
然后我为实现 ICategory 的 Category 添加了另一个部分类:
public partial class Category : ICategory
{
}
问题是我收到以下编译错误:
错误 6“MyProject.EntityFramework.Models.Category”未实现接口成员“ICategory.Subcategories”。“MyProject.EntityFramework.Models.Category.Subcategories”无法实现“ICategory.Subcategories”,因为它没有匹配的返回类型“System.Data.Objects.DataClasses.EntityCollection < ICategory >”。
有什么想法可以解决这个问题吗?我究竟做错了什么?类别正在实施 ICategory 所以 ICategory 中的子类别(ICategory 集合)应该匹配,不是吗?
我正在使用 EF 4.4,但我认为问题与此无关。提前致谢。