我对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。
我不知道从哪里开始看 - 也许有人之前已经经历过这种情况并且可以指出我正确的方向......
非常感谢!