2016-06-15 17 views
2

すべての標準フィールドに基本モデルを使用しようとしていますが、LocationIssueModelやPersonIssueModelなどの他のモデルは異なるプロパティを持ちます。テーブル構造は、location_issueに必要なフィールドが存在する場合と同じです。person_issueには必要なフィールドがあり、メインのissueテーブルは共通フィールドに使用されます。 location_issueとperson_issueの両方に、issueテーブルのissue_kyに対するFKであるPKがあります。継承モデルを使用したエンティティ分割

以下の設定を使用して、IssueModel1でLinqクエリとエラーを実行しようとしています。

この設定は正しいですか?

編集:IsActiveLocationフラグエンティティ分割を使用してインターフェイスのためには

モデル

public class IssueModel 
{ 
    public int Key { get; set; } 
    public string RequestNumber { get; set; } 
    public bool IsActiveLocation { get; set; } 
} 

public class LocationIssueModel : IssueModel 
{ 
    public string LocationName { get; set; } 
} 

public class PersonIssueModel : IssueModel 
{ 
    public string PersonName { get; set; } 
} 

構成

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<LocationIssueModel>() 
    .Map(m => 
    { 
     m.Properties(t => new { t.Key, t.RequestNumber }); 
     m.ToTable("issue"); 
    }) 
    .Map(m => 
    { 
     m.Properties(t => new { t.Key, t.LocationName }); 
     m.ToTable("location_issue"); 
    }); 
} 

SQL

SELECT '0X0X' AS [C1], 
[Extent1].[issue_ky] AS [issue_ky], 
[Extent3].[request_nbr] AS [request_nbr], 
[Extent1].[location_ky] AS [location_ky], 
FROM  [dbo].[Issue1] AS [Extent1] 
INNER JOIN [wm].[location_issue] AS [Extent2] ON [Extent1].[issue_ky] = [Extent2].[issue_ky] 
INNER JOIN [wm].[issue] AS [Extent3] ON [Extent1].[issue_ky] = [Extent3].[issue_ky] 

を使用する必要がありますご覧のように、生成されたSQLは期待どおりではありません。

+0

解決策は、TPT継承(Florianが示唆したように)と基本モデルでのエンティティ分割を使用することでした。 – warborn85

答えて

1

あなたの設定は私が正しくあなたを理解すれば、あなたはこのように行うことができ、テーブルごとの種類(TPT)の継承を、やりたい、間違っている:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<LocationIssueModel>().ToTable("LocationIssues"); 
    modelBuilder.Entity<PersonIssueModel>().ToTable("PersonIssues"); 
} 

は、詳細情報は、このリンクをチェックアウトこのタイプの継承:http://weblogs.asp.net/manavi/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-2-table-per-type-tpt

+0

助けてくれてありがとう!オリジナルの質問を編集しましたが、あなたのソリューションを使用することができました。 – warborn85

関連する問題