3

ASP.NET Boilerplateを使用する場合、以下のモデルと 1:1 の関係を設定するにはどうすればよいですか? 前もって感謝します。

注 1: EF の 1 対 1 の関係に関するこの素晴らしい回答を見てきました。しかし、残念ながら、PK は ABP によって自動的に設定されるため、ASP.NET Boilerplate で設定する方法がわかりません。私のシナリオでは、両方のテーブルにintPK があります。

注 2:ここで、PropertyAddressモデルは 1:1 の関係にあります。

Propertyモデル:

[Table("IpProperties")]
public class Property : FullAuditedEntity
{
    public virtual bool Vacant { get; set; }

    public virtual Address Address { get; set; }
}

Addressモデル:

[Table("IpAddresses")]
public class Address : FullAuditedEntity
{ 
    [Required]
    [MaxLength(MaxLength)]
    public virtual string StreetNumber { get; set; }

    public virtual Property Property { get; set; }
}
4

2 に答える 2

4

リレーションシップ マッピングはOnModelCreating、DbContext のメソッドで行う必要があります。DbContext クラスは、EntityFramework フォルダーの下の EntityFramework プロジェクトにあります。

次のようなものを使用できます。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Entity<Property>().HasRequired(e => e.Address).WithOptional(e => e.Property);
}

PropertyプロパティAddressが null であってはならない場合、ユース ケースに応じて、メソッドをまたはに.WithOptional()置き換えることができます。WithRequiredDependent()WithRequiredPrincipal()

別の解決策:

ABP フォーラム - 参照整合性の問題 - 1 対 1 の関係

于 2015-12-08T07:04:34.260 に答える