2015-09-04 2 views
0

Я начинаю делать опыт с EF Code-First, а также службой WCF и столкнулся с проблемой, я не мог решить со всеми гидами об этой проблеме:EF Code First Многих One-To-One-Отношения

я получил следующую структуру

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

кода Но когда я хочу, чтобы получить все каналы, все зависимости не будут получены, так Категория, Тип & Язык не является нулевым, и у меня нет идея как реши это.

Кто-нибудь еще знает, как это сделать?

ответ

1

Я попытаюсь ответить на ваш вопрос правильно, исходя из моего опыта (с тех пор, как моя компания больше не использует EF).

Сначала вам может потребоваться применить ключ к вашим объектам. Я сделал это в методе OnModelCreating.

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

Во-вторых, я считаю, вы должны установить соответствия между этими объектами также может быть сделано в методе OnModelCreating.

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

Наконец ваша потребность включить жадную загрузку или использовать .INCLUDE на запросе так, что дочерний объект извлекается, когда родитель.

Все исправления приветствуются, поскольку прошло некоторое время.

+0

спасибо! Я не мог применить ваш код для построителя модели (второй не должен быть скомпилирован), но Include был тем, что я пропустил =) –