【发布时间】:2012-01-03 02:49:40
【问题描述】:
我有两张桌子:
发票(ID、InternalPrice、ExternalPrice)
InvoiceSummary(InvoiceID、Variance)
在这个应用程序中,我们有一个处理 Invoice 表的过程,在 Entity Framework 中创建对象表示。然后,应用程序必须计算 (InternalPrice – ExternalPrice) 之间的差值并将其存储在 Variance 列中。
为了让实体框架能够在大量行(约 500 万行)上有效地执行此操作,我将计算结果分离到一个单独的表中。这允许我使用对象表示来计算方差(加上其他业务逻辑),然后使用“SQL 批量插入”将数据快速插入我的数据库(比普通实体更新快得多)。
我想将 Invoice 和 InvoiceSummary 表合并到一个实体对象中,同时为如上所述的 BCP 纵容保留单独的表。但是,InvoiceSummary 中可能并不总是有匹配的行。
看起来 Entity Framework 需要在两个表之间进行 1 对 1 的映射来实现合并的实体。 有谁知道我如何让 Entity Framework 用 0 到 1 的映射来表示它?
如果我没有找到实体框架解决方案,我可以使用视图来“隐藏”底层表结构。我正在使用支持可更新视图的 SQL 服务器,所以这对 EF 应该是透明的吗?也欢迎替代结构解决方案。
【问题讨论】:
-
我尝试使用视图来创建我正在寻找的实体结构。虽然 SQL Server 支持可更新视图,但 EF 似乎创建了一个只读实体对象。不幸的是,这不太符合我的要求,因为我需要更新访问权限。我知道我可以手动更改 EDML 以允许将更新应用于视图,但是每次从数据库更新模型时都需要重新应用这些手动编辑。这似乎是一种倒退——除非有其他方法?
标签: c# entity-framework mapping outer-join