我有两个表,它们几乎是彼此的完全克隆(相同的列,只是设置为主键的不同列)。基本上第二张表只是为了保存第一张表的历史。我需要做的是,当用户更新表 1 中的记录时,我需要将该记录的原始副本插入表 2。
我正在使用 LinqDataSource 对象并利用该LinqDataSource_Updating(object sender, LinqDataSourceUpdateEventArgs e)
事件,因此我可以访问e.OriginalObject
这将非常适合在表 2 中插入原始行。我的问题是我不想手动设置每个属性,因为大约有 50其中,所以我想使用反射,但不知道如何正确地去做。
考虑以下代码:
INSTRUMENT_DATA_SHEET _original = (INSTRUMENT_DATA_SHEET)e.OriginalObject;
INSTRUMENT_DATA_SHEET_HISTORY _history = new INSTRUMENT_DATA_SHEET_HISTORY();
如何将所有_original
' 的属性值复制到_history
' ?我已经尝试使用这个问题的解决方案,但是它对我不起作用。它抛出错误:
Property DATE has an incompatible type in E_and_I.INSTRUMENT_DATA_SHEET_HISTORY
我的猜测是,这是因为该DATE
列是表 2 中主键的一部分,而不是表 1。正如我所说,两个表之间的唯一区别是主键。它们供您参考: