次のクラスに TPH マッピングを使用しようとしています。現時点では派生クラスが 1 つしかないことは無視してください。実際のコードには多くの派生クラスがあります。
public abstract class Account
{
public virtual int Id { get; set; }
}
public class UserAccount : Account
{
public virtual string Username { get; set; }
public virtual string Password { get; set; }
public virtual string PasswordSalt { get; set; }
public virtual bool Verified { get; set; }
}
マッピング...
public class AccountMapping : EntityTypeConfiguration<Account>
{
public AccountMapping()
{
this.ToTable("Account");
}
}
public class UserAccountMapping : EntityTypeConfiguration<UserAccount>
{
public UserAccountMapping()
{
this.Property(x => x.Username).HasMaxLength(50);
this.Property(x => x.Password).HasMaxLength(68);
this.Property(x => x.PasswordSalt).HasMaxLength(24);
this.Map(x => x.Requires("AccountTypeId").HasValue((int)AccountType.User));
}
}
Add-Migration を呼び出そうとすると、次のエラーが表示されます...
タイプ 'UserAccount' に対して Map が複数回呼び出されましたが、少なくとも 1 つの呼び出しでターゲット テーブル名が指定されていませんでした。
UserAccountMapping を次のように変更します...
public class UserAccountMapping : EntityTypeConfiguration<UserAccount>
{
public UserAccountMapping()
{
this.Property(x => x.Username).HasMaxLength(50);
this.Property(x => x.Password).HasMaxLength(68);
this.Property(x => x.PasswordSalt).HasMaxLength(24);
this.Map(x =>
{
x.ToTable("Account");
x.Requires("AccountTypeId").HasValue((int)AccountType.User));
});
}
}
その問題を修正するようですが、プロパティが複数回マップされているというエラーが表示されます。
タイプ 'UserAccount' のプロパティは、一度しかマップできません。非キー プロパティ 'Username' が複数回マップされています。Properties メソッドが各非キー プロパティを 1 回だけ指定していることを確認します。
私は何を間違っていますか?