Cyc*_*eak 4 sql sql-server entity-framework sql-server-2012
我坚持以下情况.我有一个数据库,其中包含一个包含客户数据的表格和一个表格,我在其中放置记录以监控B2B网站上发生的情况.
客户表如下:
监测表:
PARAMETER1中包含客户指南以及存储的其他数据类型.
现在问题是根据他们上次访问日期订购我们的客户,最近访问过的客户必须排在网格顶部.
我正在使用实体框架,我遇到了比较字符串和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_%')
Run Code Online (Sandbox Code Playgroud)
我在EF中导入了视图并进行了Linq查询.它什么也没有返回,所以我提取了生成的SQL查询.在SQL Management Studio中测试查询时出现以下错误: 从字符串转换为uniqueidentifier时转换失败.
问题在于以下代码段(针对此问题进行了简化,但也出现了错误:
SELECT *,
(
SELECT
[v_LastViewDateCustomer].[customerguid] AS [customerguid]
FROM [dbo].[v_LastViewDateCustomer] AS [v_LastViewDateCustomer]
WHERE c.GUID = [v_LastViewDateCustomer].[customerguid]
)
FROM CM_CUSTOMER c
Run Code Online (Sandbox Code Playgroud)
但是当我加入时,我得到了我的结果:
SELECT *
FROM CM_CUSTOMER c
LEFT JOIN
[v_LastViewDateCustomer] v
on c.GUID = v.customerguid
Run Code Online (Sandbox Code Playgroud)
我试图制作一个SQL小提琴,但它正在该网站上工作.http://sqlfiddle.com/#!3/66d68/3
谁可以指出我正确的方向?
使用
TRY_CONVERT(UNIQUEIDENTIFIER, parameter2) AS customerguid
Run Code Online (Sandbox Code Playgroud)
代替
CONVERT(UNIQUEIDENTIFIER, parameter2) AS customerguid
Run Code Online (Sandbox Code Playgroud)
视图内联到查询中,并且CONVERT可以在之前运行WHERE.
对于其他一些讨论,请参阅SQL Server不应引发不合逻辑的错误
| 归档时间: |
|
| 查看次数: |
19081 次 |
| 最近记录: |