2

我目前的项目涉及一个称为 SOQ 的领域概念。从概念上讲,SOQ 可以描述为具有以下属性:

  • 位置类型
  • 位置 ID
  • 产品编号
  • 供应商编号
  • 日期
  • 数量
  • 地位

SOQ 如何在数据库中表示是完全不同的故事。

短版

获取类似于上述描述的 SOQ 对象涉及将表连接到自身并将一些列数据转换为行数据。

我目前的情况是我在实体框架中使用直接的表到对象映射,并且已经实现了“事后”的自联接和转置,这种转换的结果在第二个类中表示。

我想要的情况是查询 ObjectContext 只会返回一个很好的域对象,它隐藏了复杂的数据库表示。该对象将需要能够被读取并持久更新到数据库。我永远不会创建或删除这些对象。

这可能吗?

长版

  • SOQ 可能存在于 fardaily 或 farweekly 两个数据库表之一中。
  • 两个表都有一个由 LocationType、LocationId、ProductNumber、VendorNumber 和FieldType列组成的复合键。
  • 这两个表也有许多列,如 DateNN:
    • FarDaily 有列 Day01..Day28,
    • FarWeekly 有列 Week01..Week65。
  • 日期列的类型为十进制
  • 给定行的 DateNN 列的值的含义由该行的 FieldType 列的值决定。
    • Fieldtype 52 表示 DateNN 列包含 Qty 值
    • 字段类型 54 表示状态值。

例如:

LocationType  LocationID  ProductNumber ... FieldType  Day01  Day02 ...
100           S           999               52         5      2
100           S           999               54         0      1

这个(截断的)示例显示了两个 SOQ - 一个用于 Day01,一个用于 Day02。

  • Day01 SOQ 的数量为 5,状态为 0。
  • Day02 SOQ 的数量为 2,状态为 1。

更合理的表示是一行(或对象)代表一个 SOQ:

LocationType  LocationID  ProductNumber ... FieldType  Day  Qty  Status
100           S           999               52         1      5  0
100           S           999               54         2      2  1

正如我上面提到的,我目前正在自己​​创建这样的对象。但我想知道是否有可能让实体框架为我做这件事?

4

0 回答 0