实体框架代码第一个流畅的api关系

时间:2016-06-12 16:14:14

标签: c# entity-framework ef-fluent-api

我有一个表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

使用

1 个答案:

答案 0 :(得分: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; }