Entity Framework を使用してデータベースに行を追加するメソッドを持つジェネリック C# クラスを作成したいと考えています。
というテーブルが 1 つありますAddress
。データベースに住所を追加するために、次のコードを作成しました。
public class AddressExchange
{
public int Insert(Address address)
{
using (var db = new DemoWebEntities())
{
//db.AddObject("Address", address);
db.Addresses.AddObject(address);
db.SaveChanges();
return address.Id;
}
}
}
EDMX 内の任意のエンティティに対してこの操作を実行するジェネリック クラスを作成したいと考えています。私はそれが次のように見えるべきだと思います:
public class EntityExchange<T, KeyType>
{
public KeyType Insert(T t)
{
using (var db = new DemoWebEntities())
{
// The entity set name might be wrong.
db.AddObject(typeof(T).Name, t);
// EF doesn't know what the primary key is.
return t.Id;
}
}
}
メソッドを使用してオブジェクトをデータベースに追加することは可能かもしれないと思いますAddObject
が、特に複数形の場合、entityset 名は型名と必ずしも同じではありません!
また、主キーを呼び出し元に返したいのですが、どのフィールドに主キーが含まれているかを知る方法がわかりません。