实体框架数据库首先用于编写糟糕的数据库

时间:2012-02-29 18:37:27

标签: c# sql entity-framework anti-patterns

我有一个写得非常糟糕的遗留SQL Server数据库,我需要编写代码。遗憾的是,许多尚未更新的遗留应用程序仍在针对此数据库运行。我想我会使用实体框架来干净地编写我的C#应用​​程序代码。

我的表格如下所示。

矢量

  • VectorId(INT)PK
  • 名称(VARCHAR)
  • 信息(VARCHAR)

不幸的是,Vector。 Info 是一系列逗号分隔的值,我需要能够干净地编辑它们。 Vector.Info中的条目示例可以是:150,-56,36,866(它们以特定顺序对应于X,Y,Z,T)。我知道这是一个糟糕的反模式,使用实体框架处理这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

EF不支持表值函数,因为它们不可组合,因此您无法使用像

这样的查询
 from c in Vectors
    where fnInfo(c).Any(f=>f.X == 150)
    select c

在这种情况下你可以做的是为VectorId, Name, Info, X, Y, Z, T创建一个视图,因为看起来分割是固定的,它总是产生这些坐标。

通过这种方式,您可以将此视图与其他EF集合进一步使用。只要视图在模型中设置了PrimaryKey,就可以创建导航属性。
你必须处理更新。当其中一个坐标发生变化时,您可能需要拆分字符串并用新坐标重新组合。

相关问题