2016-06-12 9 views
1

У меня есть таблица Items и таблица Services.Entity Framework Code: первые прямые ссылки api

Каждый элемент должен иметь отношение к одному сервису.

Как написать соотношение между этими 2 через ItemServices реляционная таблица в EF Fluent api?

Вот классы

public class Item 
{ 
    public Guid Id { get; private set; } 
    public Service Service { get; private set; } 
} 

public class ItemService 
{ 
    public int ServiceId { get; set; } 

    [ForeignKey(nameof(ServiceId))] 
    public Service Service { get; set; } 

    public int ItemId { get; set; } 

    [ForeignKey(nameof(ItemId))] 
    public Item Item { get; set; } 
} 

public class Service 
{  
    public int Id { get; private set; } 

    public string ServiceCode { get; set; } 
} 

Пожалуйста, обратите внимание, что я не хочу иметь отношение таблицы внутри моего объекта Item, так что я не хочу, чтобы использовать его как item.ItemService.Service, но как item.Service

ответ

1

On в какой версии Entity Framework вы работаете?

Если вы спросите об EF Ядра, то вы можете найти очень хорошую помощь здесь:


BTW: у меня есть подобный случай в моем проекте, и он работает на условность.

Конечно, я настроен DbSet<> в моем ApplicationDbContext

(я не знаю, как это работа в более ранних версиях EF):


Есть ли что-то другая причина для использования ItemService объект или только для целей отношений?

Если вы используете ItemService только для отношений с целью, то вам не нужно в вашем случае - попробовать что-то вроде этого:

public class Item 
{ 
    public Guid Id { get; set; } 
    public Service Service { get; set; } 
} 

public class Service 
{  
    public int Id { get; set; }  
    public string ServiceCode { get; set; } 

    public Item Item { get; set; } //for One to One relationship 
    // or 
    public virtual ICollection<Item> Items { get; set; } // for One service to Many Items relationship 
} 

и в ApplicaitionDbContext:

public virtual DbSet<Item> Items { get; set; } 
public virtual DbSet<Service> Services { get; set; }