0

Dto モデルを受け取り、ドメイン モデルにマップするメソッドがあります。

方法:

public void CreateAd(CreateAdDto adDto) { 

    var adDomain = Mapper.Map<CreateAdDto, Ad>(adDto);
}

Dto オブジェクト:

public class CreateAdDto
{
    public int Model_Id { get; set; }
}

ドメイン モデルをマッピングする D:

public class Ad
{
    public int Id { get; set; }
    public Model Model { get; set; }
}

そしてモデル:

public class Model
{
    // Primary properties
    public int Id { get; set; }
    public string Name { get; set; }
    public string NameStandard { get; set; }
}

CreateAd メソッドで Model.NameStandard 値にアクセスする必要がありますが、マッピングを行うと Model Id しかありません。NameStandard 値を含むすべてのプロパティを持つモデル エンティティを取得するにはどうすればよいですか?

モデルのプロパティを取得するには、モデルの GetById(Model_Id)を呼び出す必要がありますか?それとも、すべてのプロパティを取得できる Attach のプロパティのような別の方法がありますか?

または、ViewModel で Model を使用し、Dto と Domain にすべてのプロパティを渡す必要がありますか?

ありがとう。

4

1 に答える 1

1

はい、電話するかGetById(おそらくFindまたはSingleOrDefault?)、明示的な読み込みを使用する必要があります。

context.Ads.Attach(adDomain);
context.Entry(adDomain).Reference(a => a.Model).Load();

(EF> = 4.1 /DbContext構文)

またはModel、非表示フィールドのビューに渡して、ビューからそれらを取得します。これは、パフォーマンスの質問(パフォーマンスの点で何が優れているかわかりません)またはセキュリティの質問(NameStandardユーザーがHTMLマークアップまたはネットワーク上のトラフィックを検査するときに表示できるデータのみが含まれていますか?)である可能性があります。

編集

申し訳ありませんが、上記の明示的な読み込みは意味がありません。Ad.Id利用可能で、関連するものをフェッチしたい場合にのみ意味がありますModelAdデータベースにすでに存在する場合)。

したがって、GetByIdこの場合にのみ役立ちます。

于 2012-11-08T23:13:09.007 に答える