0

我正在努力让特定的代码优先关系正常工作。基本上我有以下课程:

public class Service
{
    public Guid ServiceId { get; set; }

    public virtual List<ServicePackageService> ServicePackageServices { get; set; }
}

public class ServicePackageService
{
    public Guid ServicePackageServiceId { get; set; }

    public Guid ServiceId { get; set; }
    public virtual Service Service { get; set; }

    public Guid PackageServiceId { get; set; }
    public virtual Service PackageService { get; set; }
}

这里的想法是一个 Service 对象可以有多个 ServicePackageService 对象。这些 PackageServiceObject 与单个 Service 相关,但它们具有 PackageService 属性,这是与 Service 表的另一种关系。

在我的配置中,我使用以下内容:

    public ServicePackageServiceConfiguration()
    {
        HasRequired(x => x.Service);
        HasRequired(x => x.PackageService).WithMany().HasForeignKey(a => a.PackageServiceId).WillCascadeOnDelete(false);
    }

但是得到的数据表如下:

   ServicePackageServiceId (PK)
   ServiceId (No foreign key appears on this column)
   PackageServiceId (FK)
   Service_ServiceId (FK)

谁能指出我如何配置这种关系的正确方向。

4

1 回答 1

0

这一切都归结为配置中的错误。

处理这种关系的正确方法是指定以下 Service 配置:

HasMany(x => x.ServicePackageServices)
    .WithRequired(b => b.Service)
    .HasForeignKey(m => m.ServiceId);

以及反向关系的 ServicePackageService 配置:

HasRequired(x => x.PackageService)
    .WithMany()
    .HasForeignKey(a => a.PackageServiceId).WillCascadeOnDelete(false);
于 2012-11-01T09:50:13.403 回答