【问题标题】:Entity Framework Database First for a Poorly Written Database实体框架数据库优先用于编写不佳的数据库
【发布时间】:2012-02-29 18:37:27
【问题描述】:

我有一个写得很糟糕的旧版 SQL Server 数据库,我需要针对它编写代码。不幸的是,许多其他尚未更新的遗留应用程序仍在针对该数据库运行。我想我会使用实体框架来干净地编写我的 C# 应用程序。

我有一个如下所示的表格。

矢量

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

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

【问题讨论】:

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


    【解决方案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,您就可以创建导航属性。
    您必须处理更新。当其中一个坐标发生更改时,您可能必须拆分字符串并用新坐标重新组合它。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    相关资源
    最近更新 更多