繁体   English   中英

EF Code首先有很多一对一的关系

[英]EF Code First Many One-To-One-Relationships

我开始在EF Code-First和WCF Service方面积累经验,遇到了一个我无法使用有关此问题的所有指南解决的问题:

我得到以下代码结构

[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; }
}

但是,当我想获取所有提要时,将不会收到所有依赖项,因此CategoryTypeLanguage为null,我不知道如何解决。

还有谁知道该怎么做吗?

我将根据我的经验来尝试正确回答您的问题(不久前,因为我的公司不再使用EF)。

首先,您可能需要将密钥应用于实体。 我是在OnModelCreating方法中完成的。

modelBuilder.Entity<FeedType>().HasKey(k => k.Id );

其次,我相信您必须设置这些实体之间的映射,这些映射也可以在OnModelCreating方法中完成。

modelBuilder.Entity<FeedType>().HasRequired<Feed>(h => h.Feed).WithOptional(x => x.FeedType);

最后,您需要启用急切加载或在查询中使用.include,以便在父对象被检索时检索子对象。

欢迎进行所有更正,因为已经有一段时间了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM