サブカテゴリを持つ自己参照エンティティ カテゴリがあります。それは非常にうまく機能します。
JsTree ヘルパーを実装したいのですが、同様の構造を使用する別のプロジェクトがあるため (Category は両方のプロジェクトで 100% 類似したエンティティです)、クラス ライブラリにヘルパーを実装し、両方で利用できるようにしたいと考えています。
これは Entity Framework によって生成されたコードです。ここでは変更はありません。
[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' は、'System.Data.Objects.DataClasses.EntityCollection < ICategory >' の一致する戻り値の型がないため、'ICategory.Subcategories' を実装できません。
この問題を解決するアイデアはありますか? 私は何を間違っていますか?カテゴリは ICategory を実装しているので、ICategory 内のサブカテゴリ (ICategory コレクション) は一致する必要がありますね。
私はEF 4.4を使用していますが、問題はそれとは関係がないと思います。前もって感謝します。