【发布时间】:2013-12-26 18:20:17
【问题描述】:
我陷入了以下情况。 我有一个数据库,其中包含一个包含客户数据的表和一个用于监控 B2B 网站上正在发生的事情的记录的表。
客户表如下:
- ID,整数,不为空
- GUID,唯一标识符,非空,主键
- 其他东西...
监控表:
- ID,整数,不为空
- USERGUID,唯一标识符,空
- PARAMETER2,varchar(50),空
- 其他东西...
在 PARAMETER1 中是客户 guid 以及存储的其他数据类型。
现在问题来了,根据客户的上次访问日期对我们的客户进行排序,最近访问的客户必须排在网格的顶部。
我正在使用实体框架,但在比较字符串和 guid 类型时遇到了问题,所以我决定在我的监控表上创建一个视图:
SELECT
ID,
CONVERT(uniqueidentifier, parameter2) AS customerguid,
USERguid,
CreationDate
FROM
MONITORING
WHERE
(dbo.isuniqueidentifier(parameter2) = 1)
AND
(parameter1 LIKE 'Customers_%' OR parameter1 LIKE 'Customer_%')
我在 EF 中导入了视图并进行了 Linq 查询。它什么也没返回,所以我提取了生成的 SQL 查询。在 SQL Management Studio 中测试查询时,出现以下错误: 从字符串转换为唯一标识符时转换失败。
问题出在下面sn-p(为这个问题简化了,但也报错:
SELECT *,
(
SELECT
[v_LastViewDateCustomer].[customerguid] AS [customerguid]
FROM [dbo].[v_LastViewDateCustomer] AS [v_LastViewDateCustomer]
WHERE c.GUID = [v_LastViewDateCustomer].[customerguid]
)
FROM CM_CUSTOMER c
但是当我加入时,我会得到我的结果:
SELECT *
FROM CM_CUSTOMER c
LEFT JOIN
[v_LastViewDateCustomer] v
on c.GUID = v.customerguid
我试图制作一个 SQL 小提琴,但它正在那个网站上工作。 http://sqlfiddle.com/#!3/66d68/3
谁能指出我正确的方向?
【问题讨论】:
-
什么版本的 SQL Server?
标签: sql sql-server entity-framework sql-server-2012