我在数据库中有一个包含以下列的表:ID, Name, Txt
。我们正在使用Linq到Sql来实现DAL。在那里,另一个collegue增加了两个额外的列,因此在代码中,相同的表结果是:ID, Name, Txt, NameTemp, TxtTemp
。
这两个“假”表用于LINQ联接中代码的不同部分,并使用SQL进行分析,解析后的SQL查询接受“真实”列,一切正常工作。现在我需要使用该表进行插入,但我得到了一个异常,因为语句中也使用了假列。
,因为我不能在DB中添加两个假列(因为在数据库中没有用处),我是否可以在Linq省略这两列的情况下进行插入?
发布于 2011-10-07 00:29:04
我想我知道你的目标了。您应该能够向部分linq类添加属性--没有问题,唯一的问题是,如果您尝试对这些“假”列使用linq查询,那么当linqtosql试图引用数据库中不存在的列时,您将得到一个异常。我曾经经历过这种情况--我希望能够选择数据库中不存在的列(但是在linq2sql dbml类中这样做),并让linq2sql将这些列转换成数据库中的列。唯一的问题是,没有真正简单的方法可以做到这一点--您可以向“假”属性添加属性,以便linq2sql认为NameTmp和TxtTmp实际上是sql世界中的名称和Txt,唯一的问题是,当插入记录时,转换后的sql会两次指定同一列(这是SQL不喜欢的,并引发异常)。
您可以使用IsDbGenerated = true标记该列--这将允许您插入记录而不会出现双列问题,但如果没有linqtosql抱怨无法更新计算列,则无法更新记录。我想你可以用sproc来绕开这件事?
不久前,我在微软( Microsoft )上记录了一个错误,他们永远不会修复这个错误。这里的信息也许能帮你得到你想要的-
http://social.msdn.microsoft.com/Forums/eu/linqtosql/thread/5691e0ad-ad67-47ea-ae2c-9432e4e4bd46
https://stackoverflow.com/questions/7675960
复制相似问题