代码之家  ›  专栏  ›  技术社区  ›  Element

保存用户生成函数的最佳模式?

  •  1
  • Element  · 技术社区  · 17 年前

    我的项目需要用户创建一些基本的数学函数,我需要将这些函数存储在一个MS SQL数据库中,以用于我的业务逻辑中的数据集。

    功能将类似于: 当(值1介于20和40之间),则值2=值2*37.8

    存储这样的内容的最佳模式是什么?

    那么,将持久化函数转换回数据集的最有效方法是什么呢?

    我正在使用C和MS SQL 2008

    3 回复  |  直到 17 年前
        1
  •  1
  •   Learning    17 年前

    这是一个困难的问题。基本上,您想要创建一个解析器。

    我相信您需要有两个表:第一个表将有一个functionid、orderid和operatorid

    第二个表在operatorid和操作数之间有1对多的关系。

    函数ID将是函数的唯一标识符。orderID将决定我们需要按哪个顺序为同一个functionID解析不同的行。操作数将是需要应用于该运算符的实际变量。

    对于EX:

    Table 1 
    
    FuncID         OrderID         OperatorID
    1              1               1 (for *)
    1              2               2 (for +)
    
    Table 2
    
    OperatorID       Operands
    1                a
    1                b
    2                c
    

    解析后,这将变为f(x)=a*b+c

    这是一个非常基本的想法。有很多的问题。希望有帮助。

        2
  •  0
  •   Noah    17 年前

    将它们存储为用户定义的函数

    关于他们的好文章 here

        3
  •  0
  •   Don Edwards    17 年前

    如果反射可用,请阅读有关emit和各种形式的加载的一系列帮助,以了解您是否可以解析用户的函数,并以可以存储在数据库中的形式生成.NET可执行文件。

    不过,在安全性和注入方面要非常小心。

    不好意思,不能比指点你一个可能有用的方向更有用了。