【发布时间】:2012-04-24 20:03:11
【问题描述】:
我在 SQL Server 数据库中定义了以下 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 实体的 Entity Framework 4.x。
实体框架代码不会将任何数据写入数据库,它只是用于读取另一个服务创建的数据。如果可能的话,我想做的是让一个实体代表这两个表。 FinancialItem 和 FinancialItemHistory 表具有相同的结构。当一个 FinancialItem 得到还清时,记录从 FinancialItem 表移动到 FinancialItemHistory 表(它保持相同的 Id)。如果我包括已付清的项目,实体框架中有没有办法有条件地提取 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 查询该接口,但似乎 Entity Framework 不支持映射到 IQueryable 上下文中的复杂类型。
【问题讨论】:
标签: c# entity-framework