適合未來的讀者。
我得到這個錯誤,當我有一個多結果存儲過程。
正如在這裏看到:
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