我有一些使用 LINQ-to-SQL 类的简单(C#、.Net 4.0)代码,我正在尝试“扩展”对象以添加我自己的字段。假设调用 LINQ 生成的类DatabaseRow
,我想添加几个bool
值供内部使用:
public class ExtendedDatabaseRow: DatabaseRow
{
public bool ReadyToWrite;
public bool Changed;
}
这在代码中可以正常工作:我可以创建类型ExtendedDatabaseRow
等的对象。但是,我想然后将这些对象写回数据库。假设我想将对象changedRow
(类型ExtendedDatabaseRow
)写回数据库:
DataClassesDataContext dc = new DataClassesDataContext();
DatabaseRow newrow = (DatabaseRow) changedRow; // "Cast" the extended object back to the base type
dc.DatabaseRows.InsertOnSubmit(newrow);
dc.SubmitChanges();
这会引发错误
你调用的对象是空的。
尝试时InsertOnSubmit
。
我可以创建一个新DatabaseRow
对象并从源对象复制每个参数,但这对我来说似乎有点混乱。我可以简单地将扩展对象转换回基础对象吗?如果可以,我做错了什么?还是我做得很好,而错误是更特定于 LINQ 的?
我对 C# 还是很陌生,尤其是使用的术语,所以如果这是一个愚蠢的问题,请提前道歉。