【发布时间】:2010-10-12 23:45:35
【问题描述】:
我有一些表格,其中包含“1/2010”、“2/2010”或“13/2010”等列中的年度序列数据。我想按此列从该表中订购数据。所以我应该像下面的 SQL 表达式那样创建排序值。
-- This code should work if amount of data is less than 1000 record per year.
CAST(SUBSTRING(ReceiveID, 0, CHARINDEX('/', ReceiveID)) AS INT) + 1000 * CAST(SUBSTRING(ReceiveID, CHARINDEX('/', ReceiveID) + 1, 4) AS INT) AS OrderReceiveID
但是,我想用 EF 4.0 编写这段代码,但遇到了一些问题。
首先,我尝试在 LINQ 查询中创建订单表达式。但我不能调用字符串到整数转换函数,如“int.Parse”,因为它不能将它转换为 SQL 语句。
其次,我在数据库中创建了标量值函数,用于将年序列数据的字符串转换为整数,例如“1/2010”到 20100001。但我无法将其导入 edmx 文件,因为它仅支持存储过程。
最后,我为此表创建自定义视图,包括自定义订单列(用于 2010001 之类的数据),并使用附加列对该表进行排序。一切正常。但我不喜欢这样,因为我不需要为每个表创建一个视图。
你有什么想法解决这个问题而不接触数据库或创建共享函数来将序列数据转换为整数值,就像我的第二个想法一样?
谢谢,
【问题讨论】:
标签: sql-server entity-framework