我已经试过没有任何成功谷歌搜索,唯一的问题问不是没有找到一个解决方案:http://social.msdn.microsoft.com/Forums/pl-PL/linqtosql/thread/cee9df70-f38d-40be-ab1a-6697fac461d8EXECUTE sp_executesql的@SQL LINQ的返回void
SP
@CustomerName varchar(150) = NULL
DECLARE @SQL nvarchar(2000)
SET @SQL = 'SELECT A.[id], A.[startTime], N.firstName AS CustomerForename, N.surname AS CustomerSurname, O.Email AS OfficerEmail, L.Description AS Location, AT.description AS Type, ATC.description AS Category,AD.cancelledById, A.Deleted
FROM [Calendar].[dbo].[Appointments] AS A
INNER JOIN [Calendar].[dbo].[Name] AS N ON A.Id = N.appointmentId
INNER JOIN [Calendar].[dbo].[Officers] AS O ON A.Officer = O.Id
INNER JOIN [Calendar].[dbo].[Locations] AS L ON A.Location = L.Id
INNER JOIN [Calendar].[dbo].[AppointmentTypes] AS AT ON A.Type = AT.Id
INNER JOIN [Calendar].[dbo].[AppointmentTypeCategories] AS ATC ON AT.category = ATC.Id
INNER JOIN [Calendar].[dbo].[AppointmentDetails] AS AD ON A.Id = AD.appointmentId
WHERE A.[id] > 1'
IF @CustomerName IS NOT NULL
SET @SQL = @SQL + ' AND (CustomerForename LIKE % + @CustomerName + % OR CustomerSurname LIKE % + @CustomerName + %)'
EXECUTE sp_executesql @SQL
LINQ
public IQueryable<Appointment> GetAppointmentsBySearchCriteria(int appointmentId, string customerName, int officer, int location, int type, DateTime to, DateTime from)
{
var data = _db.GetAppointmentsBySearchCriteria(appointmentId,customerName,officer,location,type,to,from);
foreach (var appointment in data)
{
}
}
这是我收到的错误:无法将void分配给隐含型局部变量
我试图加入以下:
RETURN EXECUTE sp_executesql @SQL
EXECUTE sp_executesql @SQL
RETURN
当SP拖入DBML我收到以下消息:返回类型下列存储的过程不能被检测到。设置每个存储过程的返回类型
在此先感谢您的任何帮助。
克莱尔:-)
我不知道它是否是一个错字,但是你需要使用IS来检查CustomerName变量是否为空。像** IF @CustomerName IS NOT NULL ** –
我的下一个建议是避免使用C#关键字作为C#代码中的变量名称:** DateTime to,DateTime from **。我甚至不认为它的法律加它只会通过抛出编译器来引起混淆,这样你得到的错误信息可能不准确 –
我将更改@CustomerName IS NOT NULL。我没有意识到来回关键字。他们指的是什么? – ClareBear