同期手順を書こうとしています。ローカル データベースへの変更のログ テーブルがあり、それらをリモート データベースに適用したいと考えています。
エンティティセット名と RowId という一意のフィールドの値がわかっている場合は、ログ エントリごとにリモート データベースで対応するレコードを見つける必要があります。RowId は主キーではありません。
コンテキスト クラス内に以下を入れようとしましたが、新しいドメイン クラスを追加するたびにコードを編集する必要があることを意味します。
巨大な switch ステートメントを使用せずに手順を記述する方法はありますか? Entity Framework の GetObjectByKey メソッドに似たメソッド
これが私が置き換えたい巨大なswitchステートメントです
public object GetObjectByRowId(string EntitySetName, Guid RowId)
{
switch ("People")
{
case AppDataEnum.People:
return People.SingleOrDefault(x => x.RowId == RowId);
break;
等..
すべてのエンティティに IRowId インターフェイスを実装させることで解決できるかもしれませんが、EF に組み込みの方法があることを願っています。
ここで関連する質問をしました
ここでの答えが役立つと思います。そのシナリオでは、多くのタイプが同じテーブルから抽出されています。私のシナリオでは、多くのテーブルに RowId フィールドがあります。
Public Class Person : LoggedEntity
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
パブリック クラス 組織 : LoggedEntity { public string FirstName { get; 設定; } パブリック文字列 LastName { get; 設定; } }
Public Class LoggedEntity
{ [Key]
public int Id { get; set; }
public Guid RowId { get; set; }
}