我卡在了以下情况。我有一个带有客户数据的表格和一个记录我们B2B网站上发生事件的表格。
客户表如下:
ID,int,not null GUID,uniqueidentfier,not null,primary key 其他杂项...
监控表:
ID,int,not null USERGUID,uniqueidentifier,null PARAMETER2,varchar(50),null 其他杂项...
PARAMETER1存储客户guid以及其他数据类型。
现在的问题是按照最后访问日期对客户进行排序,最近访问的客户必须出现在网格的顶部。
我正在使用Entity Framework,并且我无法将字符串和guid类型进行比较,因此我决定在我的监控表之上制作一个视图:
但是当我进行连接操作时,我得到了结果:
客户表如下:
ID,int,not null GUID,uniqueidentfier,not null,primary key 其他杂项...
监控表:
ID,int,not null USERGUID,uniqueidentifier,null PARAMETER2,varchar(50),null 其他杂项...
PARAMETER1存储客户guid以及其他数据类型。
现在的问题是按照最后访问日期对客户进行排序,最近访问的客户必须出现在网格的顶部。
我正在使用Entity Framework,并且我无法将字符串和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中测试查询时,我得到了以下错误消息:无法将字符型转换为唯一标示符。
问题出在以下片段(为了本问题而简化,但也会导致错误:
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 fiddle上创建一个示例,但该网站无法使用。 http://sqlfiddle.com/#!3/66d68/3
有没有人能指引我正确的方向?