問題タブ [automapper-2]

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.

0 投票する
3 に答える
12776 参照

c# - AutoMapperとネストされた配列のフラット化

AutoMapperを使用して複数レベルの配列をフラット化しようとしています。

次のソースクラスを検討してください。

そして次の目的地:

私ができるようにしたいのは、1つ以上のXからリストを取得することです。例:

これを実現するために使用するマッピング構成の種類がわかりません。MapFromは、1:1の構成を行う方法のように見えますが、AutoMapperの宛先命名規則を使用しない限り、配列(または他の列挙可能なもの)を処理できないようです。

これを達成する方法についての洞察はありますか?

0 投票する
2 に答える
1577 参照

c# - これはAutoMapper2.0.0と2.2.0の間の重大な変更ですか?

今日、AutoMapper 2.0.0から2.2.0にアップデートしましたが、アップデートによってコードが壊れていることに気づきました。automapper githubサイトに問題として投稿する前に、ここでそれについて質問したかった。

私の宛先タイプの1つは、次のようにコレクションプロパティを初期化します。

automapper 2.0.0では、これは問題ありませんでした。2.2.0にアップデートしたとき、この宛先タイプにマッピングすると、「コレクションは固定サイズでした」というメッセージとともにNotSupportedExceptionが発生しました。(その例外はAutoMapperMappingException内にラップされていました。)

上記のコンストラクターコードを次のように変更することで、問題を修正できました。

AutoMapper 2.0.0はItemsプロパティにある値をすべて破棄し、setプロパティアクセサーを使用しているように見えますが、AutoMapper 2.2.0はgetプロパティアクセサーを使用して、既存のIEnumerableを変更しようとしています。Enumerable.Empty<TModel>()例外を説明する長さゼロの配列を置き換えているように見えます。

これはバグですか?AutoMapperで2.0.0と2.2.0の間で何が変更され、宛先プロパティセッターを無視し、代わりに既存のコレクションを変更しようとしますか?

アップデート:

要求に応じて、CreateMap呼び出しは次のとおりです。

クラスはPageOfEstablishmentApiModelから継承しPageOf<EstablishmentApiModel>ます。

Mapper.Mapコードは次のとおりです。

AutoMapperで2.0.0から2.2.0に移行する際に特別なマッピング構成(たとえば、.ConvertUsing(x => x))が必要な場合は、古いバージョンを使用しなければならない場合があります。AMがコレクションのプロパティを自動的に変換する方法が好きでした。それがないと、AMはValueInjecterのように見えます。

0 投票する
1 に答える
2343 参照

automapper - AutoMapperMappingExceptionマッピングタイプ:Double-> Double

アプリケーションでMapper.Mapを呼び出そうとすると、次の例外が発生します。

同じタイプ(およびそのプリミティブ型)のオブジェクトをマップできないことを示すエラーによる明らかなフラストレーションを除けば、「Acme.Order」タイプから「Acme.Address」タイプにマップすることは決してありません。

使用されている実際の呼び出しは次のとおりです。

私のオブジェクトモデルは次のようになります。

また、アプリケーションで次の構成を定義しています。

これらのヘルパーメソッドを使用すると:

(IDataRecordには、フィールド名を取得し、序数を取得し、標準メソッドを使用して値を返す拡張メソッドがありますが、簡潔にするために表示しません。)

これのいずれかが失敗の原因に光を当てていますか?

(ところで、私はAutoMapper v2.1.267を使用しています)

0 投票する
0 に答える
831 参照

asp.net-mvc - Automapper で適切にマッピングするには?

Nuget の Automapper、Unit Of Work、Entity Framework 5、ASPNET MVC 4、WebApi、および Windsor Castle を使用するアプリケーションに取り組んでいます。

これをマッピングする必要があるのか​​ 、それとも Automapper によって自動的にマッピングされる必要があるのか​​ わかりません

Uow.Stores.GetAll().OrderBy(s => s.Name)を返しますIOrderedQueryable<Store>

エラー メッセージが表示される

式の型 IOrderedQueryable を型 IEnumerable に変換できません

foreach を実行して、返されGetAllた各オブジェクトを Automapper のメソッドにStoreDto変換する必要がありますか? Mapper.MapAutomapper はそれを変換してくれませんか?

これが、Automapper の使用方法と登録方法です。何か改善すべき/できることがあれば教えてください。

AutomapperInstaller.cs:

WebWindsorInstaller:

Store.cs:

StoreDto.cs(今までのストアと同じ)

そして、これは私がインストーラーを呼び出す方法ですIocConfig.cs:

私はそこに含めるべきかどうかわからない

0 投票する
2 に答える
1422 参照

automapper - ValueInjectorまたはAutomapperを使用しているときに、「Target」オブジェクトの値が「Source」オブジェクトのnullによって上書きされないようにするにはどうすればよいですか?ネストされたマッピングの問題?

私の問題

ビューに存在しない同じクラスの「ソース」オブジェクトプロパティは、「ターゲット」オブジェクトの同じプロパティをnullで上書きしています。これを防ぐにはどうすればよいですか?影響を受けるのは、入力された(nullではない)プロパティのみが「ターゲット」オブジェクトにマージされるようにする方法です。Automapperでもこれを試しましたが失敗しましたが、代わりにAutomapperソリューションを使用できれば幸いです。

この「ヌルマッピング」の質問が以前に出てきたことはありがたいですが、ネストされたオブジェクトがあるため、私の状況がより複雑になるのではないかと心配しています。提案されたオプションを試してみましたが、機能させることができませんでした。だからここにいます。

助けてくれてありがとう。

これは複雑な問題であり、特に誰かが私のためにコードサンプルを作成できる場合は、これに関する支援に本当に感謝しています。私は数日間これの上に髪を引っ張っています:(

私が試みたこと

2つのオブジェクトがあります。1つはoriginal( "Target")で、もう1つ( "Source")はフォーム(ビュー)によって入力されます。

元の「ターゲット」オブジェクト(myOrigDoc)は次のようになります。

ここに画像の説明を入力してください

フォームの「ソース」オブジェクト(myDoc)は次のようになります。

ここに画像の説明を入力してください

次に、マッピングを行います。

次のインジェクターを使用します。

そして私は最終的に:

ここに画像の説明を入力してください

フォームには「DateOfBirth」フィールドがないため、次を呼び出すと、モデルバインディングが新しい「MyDoc」オブジェクトの「DataOfBirth」プロパティにnull値を作成していると思われます。

どうもありがとう、エド。

編集1:これはサブクラスによるネストされたマッピングの問題だと思います。ValueInjectorでこれをどのようにソートするかわかりません。

EDIT2 :ネストされたマッピングのドキュメントから可能なオートマッパーソリューションですが、動作させることができませんでした。私はまだ自分のヌルをターゲットに渡しています。

0 投票する
1 に答える
194 参照

automapper-2 - ソースプロパティから宛先にマップするにはどうすればよいですか?

以前にやったことは誓いますが、今はうまくいかないようです。基本的に、EndUserを含むものを取得していて、それをオブジェクトSiteにマップしたいと思います。SiteSiteInfo

これが私のマップ構成です:

したがってEndUser.Site、にマップできるはずSiteInfoです。を呼び出すだけで、外部でこれを行うことができますMapper.Map<SiteInfo>(EndUser.Site)。エンドユーザーから位置情報に直接マッピングする方が、よりクリーンな構文だと思います。

EndUserでは、どうすればからに直接マップできSiteInfoますか?基本的に、これは私が書きたいコードです。

EndUser.Site現在、次のようにマッピングするだけで問題を回避しています。

0 投票する
1 に答える
869 参照

asp.net-web-api - 2 つの異なるコレクション型に対してマッピングするときに AutoMapper が例外をスローする

オブジェクト マッピングに AutoMapper を使用する ASP.NET Web API サービスを作成しています。私は AbleCommerce ショッピング カート ソフトウェアに対してこのサービスを構築しています。問題のサービス (宛先) クラスは、ユーザーとそのアドレスを追跡します。

私のソースは、AbleCommerce パッケージのUserおよびクラスです。Addressジェネリック制約の使用に問題がある可能性があると思われるため、先祖クラスのクラス宣言を含めましたが、完全にはわかりません。

AbleCommerce クラスからサービス クラスへのマッピングは期待どおりに機能します。マッピング構成で不要なプロパティを無視する限り、サービス クラスから AbleCommerce クラスへのマッピングは機能します。AddressCollectionただし、Addresses プロパティの場合、(AutoMapper の観点から) AbleCommerceUserクラスの とList<AddressModel>サービスのクラスの の違いを解決する方法がわかりませんUserModel

マッピング構成をテストすると、次の例外が発生します。

AddressModelクラスには という名前のプロパティがないため、これは混乱を招きますAddresses。私は明らかに何かが欠けています。提案、アドバイス、または説明をいただければ幸いです。

0 投票する
1 に答える
206 参照

c# - Automapper を介していくつかのシーケンスをメインの ViewModel に自動投影します

Automapper を使用して SQL サーバーからいくつかのデータをビュー モデルに自動投影しようとしています。

私が持っているビューモデルは次のとおりです。

そして、私が使用しようとしているコードは次のとおりです。

2 つのプロパティIdとは、クラスName内で同じ名前を持っているため、自動投影されます。Workstation

このようないくつかのコードラインで発生する例外

いくつかの奇妙なobject reference is null例外であり、スタック トレースの上部にいくつかのオートマッパーのCreateExpression<>メソッドがあり、オートマッパーがそれを SQL コードに変換するための適切な式を生成できないという結論が得られます。

.NameSQL テーブルから.Category.Nameの 1 項目検索などの単純なマップを使用すると、完全に機能します。必要なのは、Automapper を介してシーケンスを投影しながら、複数のアイテムにアクセスすることだけです。

0 投票する
2 に答える
7114 参照

c# - AutoMapper-継承マッピングが機能しない、同じソース、複数の宛先

AutoMapper(v2.2)で、ソースタイプは同じで宛先タイプが異なるマップに継承マッピングを使用できますか?

私にはこの基本的な状況があります(実際のクラスにはさらに多くのプロパティがあります):

ViewModelAViewModelBは同じエンティティクラスの異なる表現です。

BaseViewModel次のように、ViewModelごとに同じマッピングを再利用したいと思います。

しかし、残念ながら、これは機能していないようです。次のような呼び出し:

マッピングされますmodelPropertyA、マッピングされませんCommonPropertyhttps://github.com/AutoMapper/AutoMapper/wiki/Mapping-inheritanceの例に正しく従っていると思いますが、同じソースタイプで複数のマップを作成すると、AutoMapperが作動しなくなるのではないかと思います。

洞察はありますか?基本クラスのマッピングをグループ化するというアイデアは気に入っていますが、これはうまくいかないようです。

0 投票する
2 に答える
101 参照

asp.net-mvc-3 - リスト間のマッピングを作成する方法と文字列?

このようなモデルとViewModelがありますが、AutoMapperはMyViewModelからMyModelに値を渡しません!

MyModel:

MyViewModel:

ブーストラッパー:

マッピングを正しく機能させるにはどうすればよいですか?