Entity Framework Code первый свободный отношения API

У меня есть стол Items и стол Services,

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

Как я могу написать отношения между этими 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 ответ

Решение

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

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


Кстати, у меня похожий случай в моем проекте, и он работает по соглашению.

Конечно настроил 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; }
Другие вопросы по тегам