我在尝试更新外键字段时遇到了问题:
record.ForeignId = newId;
由于 SQLMetal 代码抛出System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException()
.
我不是第一个遇到这个问题的人:
LinqToSQL 错误:由于对象的当前状态,操作无效和http://social.msdn.microsoft.com/forums/en-US/linqtosql/thread/f9c4a01a-195a-4f2b-a1cb-e2fa06e28b25/讨论它, 在其他人中。
他们的解决方案是这样的:
record.Foreign = Database.Foreigns.Single(c => c.Id == newId);
这当然会导致在 Foreign 上进行数据库查找,只是为了取回具有我已经知道的 Id 的对象!那么,如何在没有毫无意义的查询(或者如果我有很多这些 FK 的查询)的情况下完成此更新?