适合未来的读者。
我得到这个错误,当我有一个多结果存储过程。
正如在这里看到:
http://msdn.microsoft.com/en-us/data/jj691402.aspx
如果试图在第一结果访问某个项目,做一个.NextResult
后,你可能会得到这个错误。
从文章:
var reader = cmd.ExecuteReader();
// Read Blogs from the first result set
var blogs = ((IObjectContextAdapter)db)
.ObjectContext
.Translate<Blog>(reader, "Blogs", MergeOption.AppendOnly);
foreach (var item in blogs)
{
Console.WriteLine(item.Name);
}
// Move to second result set and read Posts
reader.NextResult();
var posts = ((IObjectContextAdapter)db)
.ObjectContext
.Translate<Post>(reader, "Posts", MergeOption.AppendOnly);
foreach (var item in posts)
{
Console.WriteLine(item.Title);
}
现在,如果你把这个代码
Blog foundBlog = blogs.FirstOrDefault();
以前行
foreach (var item in posts)
我想你可以模拟错误。
经验法则:
你还是得把这个东西就像一个DataReader
(消防水带)。
我的需要,我不得不转换为List<>
。
所以我改变了这一点:
foreach (var item in blogs)
{
Console.WriteLine(item.Name);
}
这样:
List<Blog> blogsList = blogs.ToList();
foreach (var item in blogsList)
{
Console.WriteLine(item.Name);
}
,我能够浏览的对象没有得到错误。
这是我遇到它的另一种方式。
private void DoSomething(ObjectResult<Blog> blogs, ObjectResult<Post> posts)
{
}
然后这个代码后(原始样品中)
foreach (var item in posts)
{
Console.WriteLine(item.Title);
}
把这个代码:
DoSomething(blogs,posts);
如果我打电话给该例程,并开始访问中的项目/属性博客和帖子,我会遇到这个问题。我明白为什么,我应该第一次接触到它。
您究竟曾尝试过什么?我不知道.edmx文件是什么,但是您可以简单地按照建议尝试删除/重新添加它。如果不能解决问题,请用您的原件替换。您使用某种VCS(版本控制系统),对吧? –
更改实体后是否更新了对象? Y对象中的X属性可能仍然定义为'int'而不是'int?' – ktharsis