私は18年間アップしているWebサイトで作業しています。ストアドプロシージャベースのサイトからADO.NETエンティティフレームワークモデルに移動
現在、データベースから情報を呼び出すメソッドを記述するときは、複数のメソッドを作成し、オブジェクトに変換するストアドプロシージャを作成する必要があります。
private static DataTable GetAddress(int ownerId)
{
using (var sql = SqlWrapper.CreateOrUpdateWrapper(AdapterType.SqlCommand, CommandType.StoredProcedure, "Address_LoadById"))
{
sql.AddParameterWithValue("@id", ownerId, SqlDbType.Int);
sql.Open();
var dt = new DataTable();
dt.Load(sql.ExecuteReader());
return dt;
}
}
private static List<Address> LoadAddressesByItemId(int ownerId, bool loadContact)
{
List<Address> addresses = new List<Address>();
var dt = GetAddress(ownerId);
if (dt == null || dt.Rows.Count <= 0) return addresses;
foreach (DataRow dr in dt.Rows)
{
addresses.Add(new Address(dr, loadContact));
}
return addresses;
}
private Address(DataRow dr, bool getContact = true)
{
AddressID = Convert.ToInt32(dr["AddressID"]);
AddressType = (AddressTypes)(Convert.ToInt32(dr["addressType"]));
AddressLineOne = dr.GetString("addressLine1");
AddressLineTwo = dr.GetString("addressLine2");
AddressLineThree = dr.GetString("addressLine3");
Town = dr.GetString("town");
County = dr.GetString("County");
Country = dr.GetString("Country");
PostCode = dr.GetString("Postcode");
OwnerId = Convert.ToInt32(dr["OwnerId"]);
}
個人的にはこれはかなり長いと思いますが、エンティティフレームワークに移行したいと思います。以下のように。
public static List<Address> GetAddressesByID(int ownerId)
{
return DBContext.Addresses.Where(a => a.OwnerId == ownerId).ToList();
}
これを行うにはどうすればいいですか?クラスライブラリは200+クラスです。だから私はそのクラスまたはそれにリンクするための新しいコードを書くときにのみ、EFを使用するようにクラスを変換したいと思います。
上記の例では、既存のストアドプロシージャコードを使用してオーナークラスだけを残し、アドレスを更新してエンティティフレームワークとLinqを使用したいと考えています。
EF 6 midプロジェクトの使用を開始し、クラスライブラリ全体を編集することなくEF6を新しいクラスと古いクラスに適用する方法を知っている人はいますか?
コードなしで誰もこれに答えることはできません。より多くの背景情報。また、模範的な解決策を作成するために使用できる例がないと、これに答えることは非常に難しいです。この情報と少なくともいくつかの書式を質問に追加してください。 – user2154065