Linq / Linq-to-Sql / C#初心者の質問ですが、有用な情報が見つからないようです。質問を正しく表現していない可能性があります。助けていただければ幸いです。
したがって、既存のデータベーステーブルがいくつかあり、それらからDBMLファイルを生成しました。部分クラスとDataContextがあります。エンティティクラスをこれに接続するにはどうすればよいですか?
私は非常に明白な何かを見逃しているだけですか?
ありがとう
Linq / Linq-to-Sql / C#初心者の質問ですが、有用な情報が見つからないようです。質問を正しく表現していない可能性があります。助けていただければ幸いです。
したがって、既存のデータベーステーブルがいくつかあり、それらからDBMLファイルを生成しました。部分クラスとDataContextがあります。エンティティクラスをこれに接続するにはどうすればよいですか?
私は非常に明白な何かを見逃しているだけですか?
ありがとう
エンティティクラスを部分的なDAOクラスから分離したい場合(これは重要なアプリケーションにとっては良いことです)、最も簡単な方法は、2つの間にマッピングレイヤーを作成することです(たとえばPropertyA
、DAOクラスPropertyB
はエンティティクラス)。
ほとんどのフィールド名/タイプが2つのレイヤー間で同一である場合、多くの冗長なコーディングを節約する1つの方法は、AutoMapperなどのマッピングライブラリを使用することです。同一のプロパティを簡単に処理でき、ほとんどの場合、あまり労力をかけずに同一でないプロパティを処理するように構成できます。
MVCプロジェクトでは、通常、リポジトリでこれを行います。Map()
あるタイプのオブジェクトを受け取り、別のタイプのオブジェクトを作成する関数があります。たとえば、データレイヤーOrder
クラスをドメインレイヤークラスにマップするには、次のようにしますOrder
。
public Domain.Order GetOrder(int orderID)
{
Data.Order order = context.Orders.Where(o => o.OrderID = orderID); //
Domain.Order newOrder = Map(order);
return newOrder;
}
public Domain.Order Map(Data.Order order)
{
if (!UsingAutomapper)
{
// raw way
Domain.Order newOrder = new Domain.Order
{
ID = order.OrderID,
Number = order.OrderNumber,
OrderDate = order.OrderDate
};
return newOrder;
}
else // let AutoMapper do the dirty work
{
return Mapper.Map(order);
}
}