大きなデータベースのためのデバイスとサーバーの間に同期関数を作成しています。私は多くのリスティングテーブル(ドロップダウン/ピッカー内のアイテム)を持っています。 私は、データベースAに保存するとC#一般的なT関数(Tは文字列からのものです)
public class NameTable : IBusinessEntity {
public int Id { get; set; } = 0;
public string Description { get; set; }
}
のようなテーブルをリスト定義され、私は多くのコードを書くことをしたくないと私はエレガントな解決策を探しています:)
SQLiteの中のデバイス上で新しいレコード(アイテム)デバイスは構造が
public class SyncResult {
public int DeviceId { get; set; }
public int ServerId { get; set; }
public string TableName { get; set; }
public string Description { get; set; }
}
のようなものであるサーバーから新しいレコードを受信したとき、私は今
public int SaveItem<T>(T item) where T : IBusinessEntity {
lock (locker) {
if (item.Id != 0) {
database.Update(item);
return item.Id;
}
else {
return database.Insert(item);
}
}
}
この関数を呼び出します
次に、DeviceId == 0の場合は新しいレコードを挿入するか、既存のアイテムを更新します。
私の質問は:どのように私はTがSyncResultからテーブル名あるSaveItemを呼び出すことができますか?
は(私はそのためにビールを提供することができます!)任意の助けを事前にいただきありがとうございます
SaveItem
MyDatabase
クラスのメンバーです。基本的に私の問題はSaveItem<T>
にTを文字列として渡す方法です。
私が明らかに問題を説明しているかどうかわかりません。
Entity Frameworkを使用していますか? –
この場合、いいえ。 XamarinフォームのSQLiteです – Enrico
Tを文字列にしますか?なぜ文字列を使用しないのですか? 1つのタイプに制限する場合は、一般的ではありません。 – Krythic