SubSonic 3/ActiveRecordでは、各列を列ごとに比較することなく、2つのレコードを比較する簡単な方法があります。例えば、私は(私のデータベース内の各テーブルのカスタム比較子を記述することなく)このような何かを行う機能が欲しい:最後にSubSonic 3/ActiveRecord - 2つのレコードを簡単に比較できますか?
public partial class MyTable
{
public IList<SubSonic.Schema.IColumn> Compare(MyTable m)
{
IList<SubSonic.Schema.IColumn> columnsThatDontMatch = new...;
if (this.Field1 != m.Field1)
{
columnsThatDontMatch.add(Field1_Column);
}
if (this.Field2 != m.Field2)
{
columnsThatDontMatch.add(Field2_Column);
}
...
return columnsThatDontMatch;
}
}
を、私が本当に必要なのテスト関数であります主キー列を除く、2つの行が等しいかどうかを確認します。上記の擬似コードはこれのより一般的な形式です。私は一致しない列を取得すると、いずれかの列が主キーフィールドであるかどうかを確認できます。
私は何も見つけずにColumnsプロパティを調べました。理想的には、ソリューションはt4ファイルで投げて、データベース内のすべてのテーブルに対して生成できるものです。
テーブルの列に対してハッシュ関数をt4テンプレートに追加するのが最善の方法です。それは非常に単純な比較になります。適切なハッシングルーチンを構築することが問題になります。 : これで動作するかどうかわかりませんので、私はこれをコメントであり答えは言及していません。 – BlackMael
これは、ActiveRecordオブジェクトのすべての列を比較するカスタムコンパレータで達成できますか? – CmdrTallen