我开始使用EF Code-First和WCF服务,并遇到了一个问题我无法解决这个问题的所有指南:
我得到了以下代码结构
[DataContract]
public class Feed
{
public int Id { get; set; }
public int LanguageId { get; set; }
public int CategoryId { get; set; }
public int TypeId { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public FeedCategory Category { get; set; }
[DataMember]
public FeedType Type { get; set; }
[DataMember]
public string FeedUrl { get; set; }
[DataMember]
public Language Language { get; set; }
}
[DataContract]
public class FeedCategory
{
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
public DateTime Registered { get; set; }
[DataMember]
public IList<Feed> Feeds { get; set; }
}
[DataContract]
public class FeedType
{
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
public DateTime Registered { get; set; }
public IList<Feed> Feeds { get; set; }
}
[DataContract]
public class Language
{
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string CountryName { get; set; }
[DataMember]
public string CountryCode { get; set; }
[DataMember]
public string ShortCountryCode { get; set; }
}
但是当我想要获取所有Feed时,所有依赖项都不会被接收,因此类别,类型&amp; 语言为空,我不知道如何解决它。
还有其他人知道怎么做吗?
答案 0 :(得分:1)
我会根据自己的经验尝试正确回答您的问题(因为我的公司不再使用EF了。)
首先,您可能需要将密钥应用于您的实体。我在OnModelCreating方法中做到了这一点。
modelBuilder.Entity<FeedType>().HasKey(k => k.Id );
其次我相信您必须在OnModelCreating方法中设置这些实体之间的映射。
modelBuilder.Entity<FeedType>().HasRequired<Feed>(h => h.Feed).WithOptional(x => x.FeedType);
最后,您需要启用预先加载或在查询中使用.Include,以便在父项时检索子对象。
所有更正都欢迎,因为它已经有一段时间了。