在EntityRef中看不到插入到多对多表中 - 可能出错了什么?

时间:2013-05-05 18:20:22

标签: c# linq linq-to-sql

我对LINQ-To-SQL有一个奇怪的问题:

我有3个表格 - Feed,FeedTag和Tags - 其中FeedTags是供稿和标签的m:n表格。

我正在做的是将新记录插入Feed中,然后在FeedTag中为此新Feed添加新记录。

我的问题是,即使我从数据库中查询Feed对象,Feed.FeedTags属性(它是FeedTags的EntityRef)也是空的(0条记录):

// A bit simplified, adding Feed and Tag happens in different functions, but you get the idea
context.Feeds.InsertOnSubmit(newFeed);
context.SubmitChanges();
context.FeedTags.InsertOnSubmit(newTag); 
context.SubmitChanges();

var tags = context.Feeds.Single(f => f.Id == newFeed.Id).FeedTags;

标签在此处有0条记录。如果我只查询Feed对象,它将被正确返回,但也会返回0 FeedTags记录。

但是,当我使用新的FeedId明确查询FeedTags的FeedTags表时,我将获取创建的标记:

// Works as expected:
var feedTag = context.FeedTags.Single(ft => ft.FeedId = newFeed.Id && ft.TagId == newTag.Id);

因此,显然所有内容都已正确插入,但由于某种原因,父对象确实包含已创建的FeedTags。这可能有什么问题?

当我重新启动应用程序时,所有内容都再次正常运行,对Feeds表的新查询也将包含所有已创建的FeedTag。

我不知道从哪里开始看 - 也许有人之前已经经历过这种情况并且可以指出我正确的方向......

非常感谢!

0 个答案:

没有答案