[道歉了长篇大论的解释]自定义函数来确定
我已经从一个(非常!)老产品继承了AOLD应用程序与SQL数据库在任一EF4或直T-SQL的“导航”属性和我需要直接对数据库进行一些报告。不完全确定为什么但这是我发现的结构:
我有一个组表和一个报表。
组具有type
柱,“R”或“G”,的整数numElements
和image
柱称为elements
类型“R”是指基团中含有的报告,“G”是指它包含更多的组。
type = 'G'
elements = 0x2C002600
numelements = 2
result = take chunks of 4 characters,
reverse the last and first two character pairs to get 002C and 0026
convert hex to int to get 44 and 38
44和38是两个组ID - 我可以在应用程序本身内进行验证。
这同样适用于式“R”,其中ID的所得报道
有没有什么方法来映射在EF4 OR T-SQL这种行为,这样我就可以开始做一些合理的疑问? 例如
If type = G and numElements = 3
split the hex string into 3 chunks of 4 characters,
reverse character pairs,
convert to int,
map to Groups
If type = R and numElements = 11
split the hex string into 11 chunks of 4 characters,
reverse character pairs,
convert to int,
map to Reports
有成千上万的报告和数百个团体,所以虽然在应用程序中,我可以看到的分组,手动映射他们将永远需要。没有树形视图,所以我必须打开一个组来看看它包含了什么,然后打开子组(如果存在)等等。
我知道我可以手动编码,并通过逐行扫描,行abnd提取,分割,反向,转换...但想知道是否有一种方法我可以得到T-SQL或EF来为我做这个?
编辑:
请注意,是包含numElements变量,因为一个组可以包含1:许多团体或1:很多报道(但其中没有一个混合物)。因此十六进制字符串总是: “0x”+“4 x numElements”字符长
这意味着“十六进制到int”函数需要能够返回一个数组或类似的,以便1组可以是链接到许多组/报告。
这可以返回一个数组/列表的整数吗? (不是SQL专家!) – BlueChippy 2012-02-21 08:49:40
您可以创建表函数,但现在不能将它用于EF。当.Net 4.5发货时,他们将支持表格功能。因此,在视图中使用该表函数并尝试将其映射到模型中。 – 2012-02-21 08:54:41
http://stackoverflow.com/questions/1545131/entities-adding-a-navigation-property-between-a-view-and-table在这里如何添加一个表和视图之间的导航属性 – 2012-02-21 08:55:49