私はEF CodeFirstで新しいデータベースをモデリングしています。Entity Framework:基本構成クラスから継承することは可能ですか?
public abstract class Entity
{
public Guid Id { get; set; }
public byte [] TimeStamp { get; set; }
}
そして、そこのようなクラスがたくさん:FluentAPIに基づいて
public class Country : Entity
{
public string Name { get; set; }
public string InternationalCode { get; set; }
public Location Location { get; set; }
public ICollection<City> Cities { get; set; }
public Country(string name, string internationalCode, decimal latitude, decimal longitude)
: this(name, internationalCode)
{
Location.Latitude = latitude;
Location.Longitude = longitude;
}
public Country(string name, string internationalCode) : this()
{
Name = name;
InternationalCode = internationalCode;
}
public Country()
{
Location = new Location();
Cities = new List<City>();
}
}
そして、すべてのモデルのコンフィギュレーション:
public CountryConfiguration()
{
HasKey(p => p.Id);
Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Property(p => p.TimeStamp).IsRowVersion();
Property(p => p.Name).IsRequired().HasMaxLength(100);
Property(p => p.InternationalCode).IsRequired().HasMaxLength(5);
HasMany(p => p.Cities)
.WithOptional(p => p.BelongedCountry)
.HasForeignKey(p => p.BelongedCountryId);
}
ここで私は、抽象基底クラスと、このクラスから継承されたすべてのドメインモデルを持っています
問題は、
HasKey(p => p.Id);
Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Property(p => p.TimeStamp).IsRowVersion();
この部分は、ドメインモデルごとに30回以上コピーされています。コンフィグレーションクラスをから継承する方法はありますか?EntityTypeConfigurationだけでなく、継承\にはエンティティコンフィグレーションのコンフィグレーションが含まれていますか?
public class EntityConfiguration : EntityTypeConfiguration<Entity>
{
public EntityConfiguration()
{
HasKey(p => p.Id);
Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Property(p => p.TimeStamp).IsRowVersion();
}
}
私は知っている、そのC#は複数の継承を許可していません。何をお勧めしますか?
これについて新しい質問をする必要があります。しかし、そのコードの最初の3行は必要ありません。あなたのconfigクラスは基本設定クラスから継承しているので。 – mxmissile
@mxmissile、nope、ここでは継承を適用しないで "普通の"設定クラスを使用します。私はあなたのアドバイスに従い、別の質問をします。 –