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