我有一个包含超过1200列的表,它使用sql server 2008 R2的稀疏列功能。
当我尝试使用基于在Visual Studio 2010(O / R设计器)中自动生成的类的linq到sql时,我无法设置单独的列。示例代码如下:
var sparse = new SparseColsTestDataContext();
var input = new mydata();
input.status_is_ready = true;
sparse.mydatas.InsertOnSubmit(input);
sparse.SubmitChanges();
导致此异常:
The target column list of an INSERT, UPDATE, or MERGE statement cannot contain both a sparse column and the column set that contains the sparse column. Rewrite the statement to include either the sparse column or the column set, but not both.
异常是自解释的:linq似乎是使用单独的status_is_ready列和包含它的列集插入的。
稀疏列:SpecialPurposeColumns
由mydata
类公开为XElement,这是另一个问题。如果我想使用该字段而不是status_is_ready
,那么我需要创建一个XML内容,例如
<field1>value1</field1><field2>value2<field2>
如图所示here但我无法做到这一点,因为我只能使用与列名匹配的XElement实例设置一列的值。换句话说,使用XElement构造上面的xml片段是不可能的。
因此问题是:我应该如何使用linq来使用稀疏列的sql?
顺便说一句,我找不到一个教程或文档,说明如何使用稀疏列的linq到sql(或实体框架)。所以任何网址/链接也会有所帮助。