我有两个具有相同表的数据集。
数据集1
数据集2
两个表的“FullName”列的表达式属性设置为
[Grade]+'-'+[Class]
对于DataSet 2,我定义了一个方法-“Import”。
// DataSet2.cs file
namespace ConsoleApplication1
{
public partial class DataSet2
{
public void Import(DataSet1 dataSet1)
{
this.Group.Load(dataSet1.Group.CreateDataReader());
}
}
}
下面的最后一行代码(dataSet2.Import(dataSet1);
)抛出InvalidOperationException异常。
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DataSet1 dataSet1 = new DataSet1();
dataSet1.Group.AddGroupRow(1, "A");
dataSet1.Group.AddGroupRow(1, "B");
DataSet2 dataSet2 = new DataSet2();
dataSet2.Import(dataSet1);
}
}
}
这是因为“FullName”列是计算列。我想知道在这种特殊情况下如何绕过此异常?是否可以使DataReader在加载时跳过计算列?或者可能有其他一些“技巧”?。
这是我的一个数据集项目中的一个问题的再现,其中有几个表。
2条答案
按热度按时间ergxz8rk1#
请勿使用
CreateDataReader
,而应使用WriteXml
和ReadXml
:在上面的方法中,由于我使用了相同的流进行写和读,我需要重置流位置,这样读语句就可以从头开始读了。
enxuqcxy2#
你需要修改导入功能如下
因为加载函数用于导入所有列,如果您有计算列,则无法使用。