問題タブ [automapper-3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
automapper - リストする AutoMapper DataServiceCollection
AutoMapper を使用して DataServiceCollection を文字列のリストにマップし、逆のマッピングも作成しようとしています。このような特殊なコレクションを別のコレクションにマップする方法についてのアイデアはありますか?
automapper - 下線付きプロパティのカスタム規約を使用した汎用 Automapper 関数
自動生成されたクラスをデータベースからドメイン/ビューモデル クラスにマップするだけです。自動生成されたクラスには、CustomerId にマップしたい customer_id のような名前が含まれている場合があります。どうにか自分の規約をオートマッパーに登録したい。次のコードから始めましたが、マップされたオブジェクトのプロパティは設定されていません:
コメントをいただければ幸いです。
アップデート
次の回避策が機能することを発見しました。
automapper - Automapper、単一の宛先プロパティを複数のソース プロパティの連結としてマッピング
いくつかの条件に基づいて、単一のプロパティを複数のソース プロパティの組み合わせとしてマップする必要がある状況があります。
行き先 :
ソース:
私が欲しいMapper.Map<EmailViewModel,Email>()
ここで、 my をとEmail.EmailRecipient
の組み合わせとしてマッピングしたいと思います。ただし条件は、Toは1 、 Ccは2となりますEmailViewModel.To
EmailViewModel.Cc
Email.EmailRecipient.RecipientEmailTypeId
私の質問が明確であることを願っています。
c# - オートマッパーは、サブオブジェクトをマップするようにフォーカスします
プロジェクト内の応答オブジェクトを Web サービスからクラスにマップしようとしています。オートマッパーはサブオブジェクトも自動的にマッピングすると思っていましたが、強制的にメンバーに設定しない限り、そうしません。なぜ私はこれをしなければならないのですか?
Mapper.CreateMap<GetIfpQuoteResponse.Quote, QuoteWSModel>()
.ForMember(dest => dest.CarrierRate, opt => opt.MapFrom(src => src.Carriers))
.ForMember(dest => dest.DroppedCarriers, opt => opt.MapFrom(src => src.DroppedRates))
.ForMember(dest => dest.MemberPlans, opt => opt.MapFrom(src => src.MemberPlans));
このようにクラスマッピングについて言及すると、オートマッパーがサブオブジェクトをマップしないのはなぜですか
Mapper.CreateMap<GetIfpQuoteResponse.Quote, QuoteWSModel>();
Mapper.CreateMap<GetIfpQuoteResponse.Quote.Carrier, CarrierRateModel>();
Mapper.CreateMap<GetIfpQuoteResponse.Quote.DroppedCarrier, DroppedCarrierModel>();
c# - Automapper が ForMember を介して設定されたプロパティのマッピングに失敗することがある
Automapper でこの奇妙な動作に遭遇したことはありません。まず、Automapper 3.3.0 と Entity Framework 6.1.3 を使用しています。エンティティ フレームワークを介してエンティティ データを取得するメソッドがあります。データを返す前に、それをドメイン モデルにマッピングしています。3 つのプロパティを除いて、関連するプロパティの名前はエンティティとドメインの間で一致するため、提供するサンプル コードで、マップの作成時に ForMember 呼び出しが 3 つだけあることがわかります。
私が期待するように、これはほとんどの場合うまくいきます。ただし、ときどき、再現するための正確な手順を突き止めることはできませんが、明示的にマップされた 3 つのプロパティを除いて、マッピングは成功します。
適切だと私が信じているコードは次のとおりです。
参考までに、ToList 呼び出しは、EF からの遅延読み込みの問題を防ぐことを目的としています。
そして、マッパー:
iisreset を実行すると、すべて問題なく動作します。Visual Studio 2013 でデバッグ モードを少し行ったり来たりしたときに発生するようです。これらのプロパティをマップする方法を忘れているようです。渡されるエンティティ データには常に値が含まれていますが、そのうちの 3 つをドメインにマップすることはできません。
どんな助けでも大歓迎です。ありがとう!
c# - Why does Automapper map a concrete collection to a new instance each time the source collection is referenced?
I have a source object which contains 2 references to the same collection. If I map the source type to a structurally-equivalent target type, AutoMapper will create two instances of the collection in the target instance.
If I create a SourceThing
which has two references to the same List, map it to a TargetThing
, the result is a TargetThing
with two separate instances of the collection.
Is this meant to be the default mapping behavior for concrete collections in AutoMapper? Through testing, I realized that if I mapped List<int>
to List<int>
, I achieve the behavior I want, but I don't understand why. If AutoMapper tracks references and doesn't re-map a mapped object, wouldn't it see that the source.MoreNumbers
points to the same list as source.Numbers
, and set the target accordingly?
c# - automapper 最適化マッピング (モデルからビュー モデルへ -> 最新バージョンを取得)
コードのこの部分を最適化しようとしています:
オートマッパーを使用しており、コードのこの部分を最適化しようとしています
この部分では、オブジェクトをドキュメントから documentViewModel にマッピングしようとしています。この複雑なモデルでは、ソース データは常に最新のドキュメント バージョンになります。
この状況で最適化にアプローチする方法について、誰かが例や提案を提供できますか?
c# - KendoGridBinderEx - タイプにプロパティまたはフィールドが存在しません
AngularJS を KendoUI と共に使用して、WebAPI Web サービスからデータを取得するグリッドを作成しています。グリッドについては、サーバー側の並べ替え、ページング、フィルタリング、およびグループ化を許可したいと考えています。この目的のために、KendoGridBinderExライブラリを使用しようとしています。
KendoGridBinderEx ソースをダウンロードし、サンプル プロジェクトを実行すると、問題なく動作します。ただし、プロジェクトでまったく同じことを行うと、グリッドの列でフィルターを実行しようとすると、次のエラーが発生します。
System.Linq.Dynamic.ParseException: タイプ 'MyEntity' にプロパティまたはフィールド 'test' が存在しません
「test」はフィルターに入力しているものなので、フィルター テキストにする必要があります。「test」というプロパティやフィールドを探すべきではありません。
私は Fiddler をデバッグして使用し、リクエストで送信されるリクエストのフィルター部分が例の作業中のリクエストとまったく同じであることを確認したので、問題はリクエスト側にあるとは思いません。
すべてのコード ブロックについて、スペースを節約し、関係のないものを切り取るために、すべてを単純化しています。たとえば、データベース コードを切り取り、その場でエンティティのリストを生成していますが、それでも問題が発生するため、Entity Framework コードの問題ではないことがわかっています。
これが私のJSコードです:
そして、ここに私のWebAPIコントローラーコードがあります:
したがって、「名前」列に「テスト」の値で「含む」フィルターを設定すると、上記のエラーが発生します。理由についてのアイデアはありますか?