0

私が持っているのは次のようなものです

public class BuildingUnit
{
    public int ID { get; set; }
    *irrelevant stuff removed*
    public virtual BuildingUnitInsurance UnitInsurance { get; set; }
}


public class BuildingUnitInsurance
{
    public int ID { get; set; }
    *irrelevant stuff removed*
    public virtual BuildingUnit BuildingUnit { get; set; }
}

私がやりたいのは、BuildingUnit から BuildingUnitInsurance への関係をオプションにすることですが、存在する場合は、BuildingUnitInsurance から BuildingUnit への関係が存在する必要があります。私は注釈と流れるような API を使ってたくさんのことを試しましたが、実際にはどこにも行きませんでした。

ここでの実際のビジネス ケースは、BuildingUnit クラスからの情報を表示するビューを持ち、そのページでボタンをクリックしてモーダルをポップアップし、保険情報を追加することができます。そのモーダルの「保険の追加」ボタンをクリックすると、保険情報がコントローラーに送信され、その時点で保存され、BuildingUnit と BuildingUnitInsurance の間に関係が作成されます。それらの関係を実現するためにそこで何をしなければならないのか本当にわからないので、コントローラーコードの助けも素晴らしいでしょう。

4

1 に答える 1

0

BuildingUnit には 1 対 0 または 1 の関係が必要であり、BuildingUnitInsurance には 1 対 1 の関係が必要です。以下のコードが役に立ちます。そうでない場合は、構成関係の詳細をお読みください。

public class BuildingUnit
{
    [Key]
    public int ID { get; set; }

    [ForeignKey("UnitInsurance")]
    public virtual int? UnitInsuranceId { get; set; }

    public virtual BuildingUnitInsurance UnitInsurance { get; set; }
}


public class BuildingUnitInsurance
{
    [Key]
    public int ID { get; set; }

    [Required]
    [ForeignKey("BuildingUnit")]
    public virtual int BuildingUnitId { get; set; }

    public virtual BuildingUnit BuildingUnit { get; set; }
}

そして、OnModelCreating ハンドラーで:

modelBuilder.Entity<BuildingUnit>.HasOptional(x => x.UnitInsurance).WithRequired();
modelBuilder.Entity<BuildingUnitInsurance>.HasRequired(x => x.BuildingUnit).WithOptional();
于 2012-06-13T02:12:19.843 に答える