問題タブ [automapper-4]
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.
c# - サブタイプ マッピングが定義されている場合、新しいバージョンの Automapper がキャスト例外をスローする
ソース クラスと 2 つの宛先クラスがあるとします。
Automapper 3.* の場合、このコードは完全に機能しました。
ただし、4.0.4 にアップグレードした後、このマッピングは例外をスローします。
私が間違っていることはありますか、それとも AutoMapper のバグですか?
.net フィドルのコード:
- 3.3.1 バージョン: https://dotnetfiddle.net/6K9PtK
- 4.0.4 バージョン: https://dotnetfiddle.net/0mF8y8
c# - AutoMapper を使用してオブジェクトをマージする
AutoMapper を使用して複数のオブジェクトのデータをマージしようとしていますが、解決できない問題がいくつかあります。
次のようなオブジェクトがあります。
明らかに、子プロパティはすべて int ではありませんが、それらのほとんどは null 許容です。
アプリケーションの 2 つの異なる層にこれらのオブジェクトがあるため、AutoMapper を使用してそれらの間で変換しています。
変換はうまく機能し、その結果に満足しています。ただし、同じタイプの複数のオブジェクトをマージする必要があります。ほとんどまたはすべてのプロパティが設定されたオブジェクトのコピーが 1 つと、いくつかのプロパティのみが設定され、残りが null の別のコピーが作成されます。2 番目の (部分的な) オブジェクトの null 以外のプロパティを、最初の (既に入力されている) オブジェクトのそれぞれのフィールドにマップする必要があります。この回答に対する受け入れられた回答が述べているように、AutoMapper を使用してこれを行うこともできるはずですが、明確な例はありません。
しかし、操作を実行すると、どちらかのオブジェクトと同一のオブジェクトが得られますが、必要に応じて結合されていません。
Child が 10、20、100、40、50 の値を持つことを期待しています。ただし、Mapper.Map でソースまたは宛先としてマージを配置するかどうかに応じて、null、null、100、null、null、または 10、20 のいずれかを取得します。 、30、40、50。
期待値を取得する方法はありますか? エンティティを並べる方法がわからないため(同じかどうかを判断するため)、リストを持っていることが問題の原因であると考えています。質問に答えれば、1 つ以上のプロパティ (この例では Key) が同じかどうかを確認することで、子レコードが同じかどうかを識別できます。
c# - 同じタイプのネストされた Dto を持つ Dto が失敗する
プロジェクトで問題に直面しましたが、ベア テスト プロジェクトで問題を再現しました。
私は次のdtosを持っています:
対応するモデルは、DTO の代わりにモデル関係があることを除いて、まったく同じです (明らかに)。
AutoMapper 構成:
最も単純なクエリ:
これは常に次をスローしNotSupportedException
ます。
もちろん、これはオートマッパーの問題です。
今、私は次のことを試しました:
これにより、次のようなクエリがcontext.Issues.ProjectTo<IssueDto>()...
成功します。ただし、これAppUser
により結果の直接マッピングが null 値 (または Id の場合は 0) になります。そのためcontext.Users.ProjectTo<AppUserDto>().FirstOrDefault()
(または でさえMapper.Map<AppUserDto>(context.Users.FirstOrDefault())
) 常にAppUserDto
その小道具のデフォルト値を持つ を返します。
では、同じベース dto で同じタイプのネストされた複数の dto オブジェクトを、その dto オブジェクトの直接マッピングを犠牲にすることなく機能させるにはどうすればよいでしょうか?
ProjectUsing で問題を解決すること (直接マッピングを同時に機能させることができる場合) は理想的とは言えませんが、それが唯一の方法である場合はなんとかなります。
編集:
バグがある可能性が最も高く、これは興味のある人のための github の問題です。
c# - IDataReader から List への AutoMapper は常に 0 カウントを返します
アプリケーションで の最新バージョンを使用AutoMapper
しています。DataTable
オブジェクトを型に変換したいのですList
が、次のコードを使用していますDataTable
しかし、それは常に 0 カウントを返します。私のDataTable
列名もAutoShiftReportConfigDto
のプロパティの型と名前と同じです