请看这行代码.这是一个存储过程的调用,它返回一个ObjectResult<long?>.为了提取长值,我添加了Select:
dbContext.FindCoursesWithKeywords(keywords).Select(l => l.Value);
Run Code Online (Sandbox Code Playgroud)
基于intellisense,这个Select返回IEnumerable<long>.
我不确定我是否在某处读过它或者只是习惯了这个假设 - 我一直认为当EF API返回IEnumerable(而不是IQueryable)时,这意味着结果已经实现.意味着他们已从数据库中撤出.
我今天发现我错了(或者这可能是个错误?).我一直收到错误
"不允许新事务,因为会话中还有其他线程在运行"
基本上,此错误告诉您在db阅读器仍在读取记录时尝试保存更改.
最终我通过(我认为是一个长镜头)解决了这个问题并增加ToArray()了实现IEnumerable<long>......
那么 - 底线 - 我应该期望IEnumerableEF的结果包含尚未实现的结果吗?如果是,那么有没有办法知道一个IEnumerable是否已实现?
如果这是'duhhh'问题之一,感谢并道歉...... :)
我正在根据我从用户那里获得的参数构建一个IQueryable.其中一个参数是多选,我需要检索包含任何选定值的记录.
处理它的代码是:
var ids = parameters.DeliveryID.ToArray();
courses = courses.Where(c => ids.Contains(c.CourseDeliveryID));
在上面的代码中:
1.ids - 是一个字节数组,我确保它在调用Contains()之前有多个值.
2. c.CourseDeliveryID - 这是一个字节值.
在数据库中,我将CourseDeliveryID存储为tinyint(SQL Server 2008).
编译就好了.
当我运行代码时,我得到以下ArgumentException:
DbExpressionBinding requires an input expression with a collection ResultType.
Parameter name: input
我在这里找到了该例外的文档:http: //technet.microsoft.com/en-us/library/system.data.common.commandtrees.expressionbuilder.dbexpressionbuilder.bindas.aspx
在尝试解决问题的过程中,我发现如果我在短裤,整体或多头上使用相同的代码,我就没有任何问题.
我从昨天起就与微软就这件事情进行过接触,并会在我了解更多时更新,但与此同时我想我也会把它扔到这里,以便在可能的情况下获得更多建议.
提前致谢!
从几天前我们收到了来自Instagram API的错误响应 - 它抱怨我们在访问Tags端点时使用了无效的游标'min_id'.
事情是我们不使用'min_id'.我们使用'min_tag_id',根据文档(不建议使用和当前),它是此端点的有效游标.
做一些研究我发现有些人本周也会遇到意想不到的错误(虽然不同).
示例API请求(插入访问令牌并粘贴到浏览器中以查看):
https://api.instagram.com/v1/tags/nofilter/media/recent?access_token=<ACCESS_TOKEN>&min_tag_id=AQCvuinNA31T_hoSa-RaCsQigBknfYaBv2_VcCn1kp4MX5whyr7v7AfpOzio8E4lcQ9TZIKZbN_ZAqEmuzmslq8qMmFTQF-1ocNntqDIjlN4va4GxocNeBxmo29nXEOjKIRVvce5PuvoXk3MY9nuNd6hbxFj7TW_FEWTWpdx9FNzEQ
Run Code Online (Sandbox Code Playgroud)
并回应:
{"meta":{"error_type":"APIInvalidParametersError","code":400,"error_message":"min_id is not a valid cursor for this tag."}}
Run Code Online (Sandbox Code Playgroud)
任何的想法?