我有一个类型ContentEntry
和一些继承它的类。其中一些类实现了一个需要属性ICollection<T> LanguageSpecificItems
的接口。 T的类型取决于子类的类型。这些属性将映射到我的数据库中。这根本不是问题。
我的问题是我有一个ICollection<ContentEntry>
作为另一个类的属性。但我需要获取LanguageSpecificItems
子列表(如果存在)以使用ContentEntry
的抽象方法进行某些操作。如果我在.Include
上拨打DbSet<MyOtherClass>
,则无效。
MyDbSet.Include("LanguageSpecificItems")...
指定的包含路径无效。 EntityType'Koopakiller.Website.Model.ContentEntry'不声明名为'LanguageSpecificItems'的导航属性。
但它存在于一些继承的类中,如果它不存在,我不需要它。
我该如何解决这个问题?
更新:代码
这是我的`DbContext:
的一部分public partial class CommonDbModel : DbContext
{
public CommonDbModel() : base("DefaultConnection") { }
public DbSet<Account> Accounts { get; set; }
帐户的属性为ContentEntry
s:
public class Account : IUser<Guid>
{
public virtual ICollection<ContentEntry> CommentEmailSubscriptions { get; set; }
ContentEntry
为订阅添加了一个Àccount`集合:
public abstract class ContentEntry : ISearchResult
{
public virtual ICollection<Account> CommentEmailSubscriptions { get; set; }
public abstract LocalizedSearchResult GetLocalizedPart();
GetLocalizedPart
在子类中实现,如果类实现了接口,则在某些情况下访问LanguageSpecificItems
属性:
public class BlogEntry : ContentEntry, ILanguageSpecificContainer<BlogEntryLS>
{
public ICollection<BlogEntryLS> LanguageSpecificItems { get; set; }
所以,我访问Account
项目并想要致电GetLocalizedPart
。 e.g:
db.Account.Include("CommentEmailAbonnements")
.Include("CommentEmailAbonnements.LanguageSpecificItems")
.FirstOrDefault(x=>x.Id = ...)
.CommentEmailAbonnements.FirstOrDefault()
.GetLocalizedPart();