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 オブジェクトを持つことができるということです。これらの PackageServiceObjects は単一のサービスに関連付けられていますが、Service テーブルとの別の関係である PackageService プロパティを持っています。

私の構成では、次のものを使用しています。

    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

これはすべて、構成のエラーに起因していました。

この関係を処理する正しい方法は、次のサービス構成を指定することです。

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 に答える