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#、特に使用される用語に非常に慣れていないため、これがばかげた質問である場合は事前に謝罪してください。