C# 返回页面列表时的EntityCommandExecutionException
Edit:我已经解决了原来的问题,但它引出了另一个问题 问题出在这条线路上C# 返回页面列表时的EntityCommandExecutionException,c#,asp.net-mvc-4,sql-server-ce,elmah,C#,Asp.net Mvc 4,Sql Server Ce,Elmah,Edit:我已经解决了原来的问题,但它引出了另一个问题 问题出在这条线路上 && (logLevel == "All" || logLevel == "Error") && (logLevel == "All" || logLevel == "Error") “列表”中的LINQ查询生成以下SQL SELECT 0 AS [C1], N'guid' AS [C2], [Extent1].[ErrorId] AS [ErrorId], [Extent1]
&& (logLevel == "All" || logLevel == "Error")
&& (logLevel == "All" || logLevel == "Error")
“列表”中的LINQ查询生成以下SQL
SELECT
0 AS [C1],
N'guid' AS [C2],
[Extent1].[ErrorId] AS [ErrorId],
[Extent1].[TimeUtc] AS [TimeUtc]
FROM [ELMAH_Error] AS [Extent1]
WHERE ([Extent1].[TimeUtc] >= @p__linq__0) AND ([Extent1].[TimeUtc] <= @p__linq__1) AND ((N'All' = @p__linq__2) OR (N'Error' = @p__linq__3))
SELECT
0 AS [C1],
N'guid' AS [C2],
[Extent1].[ErrorId] AS [ErrorId],
[Extent1].[TimeUtc] AS [TimeUtc]
FROM [ELMAH_Error] AS [Extent1]
WHERE ([Extent1].[TimeUtc] >= @p__linq__0) AND ([Extent1].[TimeUtc] <= @p__linq__1) AND ((N'All' = @p__linq__2) OR (N'Error' = @p__linq__3))
当我从LINQ查询中删除logLevel==“All”时,错误消失了
所以,我现在的问题是-为什么LINQ/SQL试图截断p_LINQ___2?它正在进行比较。。。为什么需要截断?
原始问题 我正在将Elmah和Log4Net与我现有的MVC应用程序集成(遵循本指南-)。我使用的是SQLCE4。已处理和未处理的错误正在记录到数据库中,我遇到的问题是查看错误的UI 我得到一个由此行触发的EntityCommandExecutionException(下面列出了完整的方法) 链式方法
public IQueryable<LogEvent> GetByDateRangeAndType(int pageIndex, int pageSize, DateTime start, DateTime end, string logLevel)
{
IQueryable<LogEvent> list = (from a in _context.ELMAH_Error
where a.TimeUtc >= start && a.TimeUtc <= end
&& (logLevel == "All" || logLevel == "Error")
select new LogEvent
{
IdType = "guid"
,
Id = ""
,
IdAsInteger = 0
,
IdAsGuid = a.ErrorId
,
LoggerProviderName = "Elmah"
,
LogDate = a.TimeUtc
,
MachineName = a.Host
,
Message = a.Message
,
Type = a.Type
,
Level = "Error"
,
Source = a.Source,
StackTrace = ""
});
return list;
}
public IQueryable GetByDateRangeAndType(int-pageIndex、int-pageSize、DateTime开始、DateTime结束、字符串日志级别)
{
IQueryable list=(来自于一个in_context.ELMAH_错误
其中a.TimeUtc>=start&&a.TimeUtc我已经解决了我的问题,尽管它会引发另一个问题
问题出在这条线路上
&& (logLevel == "All" || logLevel == "Error")
&& (logLevel == "All" || logLevel == "Error")
“列表”中的LINQ查询生成以下SQL
SELECT
0 AS [C1],
N'guid' AS [C2],
[Extent1].[ErrorId] AS [ErrorId],
[Extent1].[TimeUtc] AS [TimeUtc]
FROM [ELMAH_Error] AS [Extent1]
WHERE ([Extent1].[TimeUtc] >= @p__linq__0) AND ([Extent1].[TimeUtc] <= @p__linq__1) AND ((N'All' = @p__linq__2) OR (N'Error' = @p__linq__3))
SELECT
0 AS [C1],
N'guid' AS [C2],
[Extent1].[ErrorId] AS [ErrorId],
[Extent1].[TimeUtc] AS [TimeUtc]
FROM [ELMAH_Error] AS [Extent1]
WHERE ([Extent1].[TimeUtc] >= @p__linq__0) AND ([Extent1].[TimeUtc] <= @p__linq__1) AND ((N'All' = @p__linq__2) OR (N'Error' = @p__linq__3))
当我删除LINQ查询中的logLevel==“All”frmo时,错误消失了
我的下一个问题是-为什么LINQ/SQL试图截断p_LINQ___2?它正在执行比较…为什么需要截断
(N'All' = @p__linq__2)