Fluentオートマッパーを使用してクラスをマップしています。現在、個人の要約情報を含む基本クラスと、完全な情報を含む派生クラスがあります。
interface IPersonSummary
{
string Name { get; set; }
DateTime? DOB { get; set; }
}
interface IPerson : IPersonSummary
{
string Address { get; set; }
string HairColor { get; set; }
}
public class PersonSummary : IPersonSummary
{
public string Name { get; set; }
public DateTime? DOB { get; set; }
}
public class Person : PersonSummary, IPerson
{
public string Address { get; set; }
public string HairColor { get; set; }
}
投影法を使用して、PersonSummaryにデータを入力するために必要なフィールドのみをデータベースからロードすることは可能ですが、マップする各フィールドを明示的に宣言する必要があります。これは、そもそもオートマッパーを使用するという全体的なポイントを打ち負かします。また、プロジェクションを使用してデータベースに新しいエントリを作成する方法を見つけることができませんでした。追加のフィールド(つまり、アドレスとヘアカラー)がデフォルト値に設定されています。PersonとPersonSummaryの両方が同じテーブルを使用するように設定するためのオーバーライドを提供しようとしましたが、予想どおり、Fluentはそれについて不満を述べました。
これらのクラスを同じテーブルにマッピングするにはどうすればよいですか?