我对 LINQ-To-SQL 有一个奇怪的问题:
我有 3 个表 - 提要、提要标签和标签 - 其中提要标签是 am:n 表,用于提要和标签。
我正在做的是将一条新记录插入到 Feed 中,然后将一条新记录插入到 FeedTags 中以获取这个新的 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;
tags 这里有 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。
我不知道从哪里开始寻找-也许有人以前经历过这种情况并可以为我指明正确的方向...
非常感谢!