2017-08-17 11 views
1

私は最近、ソリューション/プロジェクトを.NET Core 1.1からEntityFramework Coreを含む2.0にアップグレードしました。私は今、EF Core 1.1から得たことのないエラーを取得しています。EFコア2.0が関係を特定できない

"ナビゲーションプロパティ 'InsurancePolicy.Person'が 'Person'タイプの関係を特定できません。

クラス/エンティティの定義は以下のとおりです。

public class InsurancePolicy 
{ 
    [Key] 
    public Guid Id { get; set; } 

    [ForeignKey("InsuranceCompanyId")] 
    public InsuranceCompany InsuranceCompany { get; set; } 
    [Required] 
    public int InsuranceCompanyId { get; set; } 

    [ForeignKey("PersonId")] 
    public Person Person { get; set; } 
    [Required] 
    public Guid PersonId { get; set; } 

    [ForeignKey("PolicyHolderId")] 
    public Person PolicyHolder { get; set; } 
    [Required] 
    public Guid PolicyHolderId { get; set; } 

    public string GroupId { get; set; } 
    public string MemberId { get; set; } 
} 

Person/PersonIdプロパティを削除すると、同じエラーが発生しますが、別のエンティティ/プロパティになります。何か他のことが起こっている、またはEF 2.0でこれが行われたやり方が変わった。これはEF 1.1で正常に機能し、移行を実行してデータベースを展開できました。 2.0へのアップグレード後、上記のエラーを出さずにDbContextを呼び出すことはできません。

+0

あなたはすなわち 'Person'クラスと関連流暢な構成、関係の他の部分を表示することができます。 –

+0

これは知られていますが、EF 2.0内です。 https://github.com/aspnet/EntityFrameworkCore/issues/9180で追跡しています。 –

+0

うわー、私はEF Core 2.0が安定していると思っていました**と**推奨**(少なくともこれはドキュメントのことです) –

答えて

2

これは、EF 2.0内で知られているissueです。

ここでの解決策は、Fluent APIを使用してリレーションシップを明示的に定義することです。例えば

(提供されたリンクから):もしあれば

modelBuilder.Entity<Relation>(e => 
    { 
     e.HasOne(r => r.AccountManager).WithMany(u => u.AccountManagerRelations).HasForeignKey(r => r.AccountManagerId); 
     e.HasOne(r => r.SalesManager).WithMany(u => u.SalesManagerRelations).HasForeignKey(r => r.SalesManagerId); 
    }); 
関連する問題