ビット関連のクエリ (デジタル入力/出力) の可能性があるため、ビット フィールドをデータベース内の個別のフィールドとして保持します。これは、入力/出力ごとに 8 ビット、テーブルごとに 2 ~ 4 の入力/出力があるためです。これらのフィールドを入力/出力を持つ別のテーブルに正規化しませんでした。これは、ストレージとデータの比率が低いためです (2 x 4B キーと 2 ~ 3B のデータをより適切な方法で格納するなど)。
私はdb-firstアプローチを使用しており、EFはこれらすべてのビット列に対してboolプロパティを生成しました。現在、ビット シフトとブール ロジックを使用してこれらのフィールドを読み取っています。私はプロパティを配列に読み込み、ビットロジックを実行してバイトを取得しています。配列は次のようになります。
bit[] bits = new bit[8] { DO_0, DO_1, ... , DO_7 };
次のように、セッターの配列を使用してプロパティを設定しています。
Action<bool>[] bitSetters = new Action<bool>[8] { (x) => DO_0 = x, (x) => D0_1 = x, ...};
問題は、モデルで取得したすべてのビット列に対して、プロパティから値の配列とセッターの配列を作成する必要があることです。別の方法はありますか?特にEFのいくつかの機能を使用しています。