0

2 種類の依存テーブルが時々連携しなければならないという興味深い状況が発生しました。

例:

異なる部門の 2 人がデータを持ってくると、1 台のマシン、2 台目はエンジンについて、どのエンジンがどのマシンに移動するか、またその逆もわかりません。これらのテーブル間の関係は、エンジンにはオプションのマシンがあり、マシンにはオプションのエンジンがあるということです。これらのテーブル間の関係はどのように見えるでしょうか?

モデル:

public class Machine{

    [Key]
    [ScaffoldColumn(false)]
    public virtual int MachineId { get; set; }

    public string MachineSerialNo { get; set; }

    public virtual int? MetrykiEnginedD { get; set; }
    public virtual MachineEngine MachineEngine { get; set; }
}

public class MachineEngine {

    [Key]
    [ScaffoldColumn(false)]
    public virtual int MachineEngineId { get; set; }

    public virtual string MachineEngineSN { get; set; }

    public virtual int? MachineId { get; set; }
    public virtual Machine Machine { get; set; }
}

コード:

modelBuilder.Entity<MachineEngine>().HasOptional(p => p.Machine) ???

modelBuilder.Entity<Machine>().HasOptional(p => p.MachineEngine) ??

ご協力ありがとうございました。アンジェイ

4

2 に答える 2

0

MetrykiEnginedD外部キーであると想定される場合:

modelBuilder.Entity<Machine>()
                    .HasOptional(p => p.MachineEngine)
                    .WithMany()
                    .HasForeignKey(entity => entity.MetrykiEnginedD);
modelBuilder.Entity<MachineEngine>()
                    .HasOptional(p => p.Machine)
                    .WithMany()
                    .HasForeignKey(entity => entity.MachineId);
于 2013-02-26T16:03:28.113 に答える
0

1 つの「MachineEngine」は 0 または 1 つの「Machine」にのみ属することができ、1 つの「Machine」は 0 または 1 つの「MachineEngine」のみを持つことができると仮定すると、次のように構成できると思います。

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Machine>().HasOptional(x => x.MachineEngine).WithOptionalDependent();

        base.OnModelCreating(modelBuilder);
    }
于 2013-02-26T21:54:59.507 に答える