SQLServerデータベースで次の2つのテーブルを定義しています。
CREATE TABLE [dbo].[FinancialItem](
[Id][bigint] identity(1,1) NOT NULL,
[TranId] [int] NOT NULL,
[Installment][int] NOT NULL,
[Amount][decimal](16,2) NOT NULL
CONSTRAINT [FinancialItem0] PRIMARY KEY
(
[Id] ASC
)
CREATE TABLE [dbo].[FinancialItemHistory](
[Id][bigint] NOT NULL,
[TranId] [int] NOT NULL,
[Installment][int] NOT NULL,
[Amount][decimal](16,2) NOT NULL
CONSTRAINT [FinancialItemHistory0] PRIMARY KEY
(
[Id] ASC
)
POCOエンティティでEntityFramework4.xを使用しています。
Entity Frameworkコードはデータベースにデータを書き込みません。別のサービスによって作成されたデータを読み取るために、データベースにデータを書き込むだけです。私がやりたいのは、可能であれば、これらのテーブルの両方を1つのエンティティで表すことです。FinancialItemテーブルとFinancialItemHistoryテーブルの構造は同じです。FinancialItemが支払われると、レコードはFinancialItemテーブルからFinancialItemHistoryテーブル(同じIDを保持します)に移動します。支払い済みのアイテムを含める場合、Entity FrameworkにFinancialItemHistoryレコードを条件付きで取り込む方法はありますか?基本的にこれを行うビューをデータベースに作成する必要があります。
SELECT Id, TranId, Installment, Amount, 0 IsHistorical
FROM FinancialItem
UNION ALL
SELECT Id, TranId, Installment, Amount, 1 IsHistorical
FROM FinancialItemHistory
FinancialItemテーブルにある未払いのアイテムをプルしたいだけなので、可能であればビューの使用は避けたいと思います。両方のエンティティを同じインターフェイス(IFinancialItem)から派生させてから、そのインターフェイスにEntity Frameworkクエリを実行しようとしましたが、EntityFrameworkはIQueryableのコンテキスト内の複雑な型へのマッピングをサポートしていないようです。