如何使用linq sql与sql server稀疏列?

时间:2016-01-15 18:32:50

标签: .net sql-server linq-to-sql

我有一个包含超过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列和包含它的列集插入的。

稀疏列:SpecialPurposeColumnsmydata类公开为XElement,这是另一个问题。如果我想使用该字段而不是status_is_ready,那么我需要创建一个XML内容,例如

<field1>value1</field1><field2>value2<field2>

如图所示here但我无法做到这一点,因为我只能使用与列名匹配的XElement实例设置一列的值。换句话说,使用XElement构造上面的xml片段是不可能的。

因此问题是:我应该如何使用linq来使用稀疏列的sql?

顺便说一句,我找不到一个教程或文档,说明如何使用稀疏列的linq到sql(或实体框架)。所以任何网址/链接也会有所帮助。

0 个答案:

没有答案