0

私はEntity Framework(およびC#について)が初めてなので、EFがどのように機能するのかわかりません。私は自分のコードでそれを機能させ、ビデオを見てきましたが、もっとやりたいと思っています。コードの構文と構成を突き止めようとしていますが、問題があり、助けてほしいと思っています。背景をあげます。

毎日、テキスト ファイルを解析し、MySQL データベースにレコードを追加したり、レコードを更新したりします。データベースには 3 つのテーブルがありますが、最終的に大きくなる可能性があります。私が最初にしたことは、それを機能させるために、Records クラスを作成し、テキスト ファイル内の特定のセクションの形式に応じて実行される個別のメソッドを作成することでした。たとえば、「A 3284712039875817230987123」は Address レイアウトであり、プログラムは最初の文字を読み取り、Records オブジェクトで実行するパーサー メソッドを決定し、メソッドを実行します。約 6 つの異なるパーサー メソッドがあり、それぞれがテキスト ファイル内の異なる「レイアウト」を解析します。また、Records クラスには、それぞれいくつかのヘルパー メソッドがあります。

さて、それが背景です。明らかな理由から、これが厄介であることがわかります。私がやりたいことは、本質的に抽象的な親クラス Records を作成し、その子をテキスト ファイル内の各レイアウトにすることです。そのため、個々のパーサーを含む Address レイアウト、Data レイアウトを用意しますが、レコードの追加/更新など、私が何度も使用するいくつかのメソッドも継承します。

私が持っている質問は、正確な EntitySet と Entity タイプを定義せずに EntitySet と Entity を渡すことができるように、メソッドに正式なパラメーターをどのように記述すればよいですか?

たとえば、次のようなものです。

public void AddRecord(EntitySet entitySet, Entity entity)
{
    context.entitySet.Add(entity);
    context.SaveChanges();
}

メソッドをどのように構築するべきかについて混乱しています。これが理にかなっていることを願っています。何かを明確にする必要がある場合はお知らせください。

ありがとう、ジャスティン

4

1 に答える 1

1

簡単な方法は、これらのメソッドを に追加することDbContextです。EntitySet を提供する必要さえありません。エンティティだけです。このコードは、解析部分を処理しません。

public void AddRecord<T>(params T[] items) where T : class
{
    var set = Set<T>();
    foreach (var item in items)
        set.Add(item);
}

一般的な削除も同様に簡単です。

public void RemoveRecord<T>(params T[] items) where T : class
{
    var set = Set<T>();
    foreach(var item in items)
        set.Remove(item);
}
于 2013-10-29T17:25:56.883 に答える