【发布时间】:2013-08-08 12:27:24
【问题描述】:
我有一些使用 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# 还是很陌生,尤其是使用的术语,所以如果这是一个愚蠢的问题,请提前道歉。
【问题讨论】:
-
这是您的原始源代码吗?在 new 和 row 之间有这个空间吗?
-
也许
newrow是null?演员阵容与此无关。 -
@oddparity:抱歉,我的错误,已修复:) @Jon:单步执行代码,
newrow确实有价值