我有一个表格Items
和表格Services
。
每个项目都需要与一个服务相关。
如何通过 EF Fluent api 中的ItemServices
关系表写入这两者之间的关系?
这是课程
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
您正在使用哪个版本的实体框架?
如果你询问有关 EF Core,则可以在此处找到非常好的帮助:
- 实体框架核心关系
- 实体框架核心流畅 API
顺便说一句:我的项目中也有类似的案例,它按照惯例工作。
当然,我已经在我的ApplicationDbContext
中配置了DbSet<>
(我不确定它在早期版本的 EF 中是如何工作的):
使用项目服务对象是否有其他原因,或者仅用于关系目的?
如果您仅出于关系目的使用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; }