在我正在进行的项目中,我们从我们内部制作的库中提取了一些基础模型。我们将它用于多个项目,到目前为止一直非常有用。我遇到的问题是我们有一个特殊的场景,我们需要在派生模型上使用一个额外的属性作为备用键,但EntityFramework抱怨在某个派生类型上无法创建AK。这是我尝试完成的一个基本例子(有很多脂肪修剪):
导入的库
LoginFormPostbackData
当前项目
LoginFormPostbackData
答案 0 :(得分:0)
嗯,首先,您的CustomerMap
类应该继承BaseCustomerMap
类。
public class CustomerMap : BaseCustomerMap
{
public CustomerMap(EntityTypeBuilder<Customer> entityBuilder)
: base(entityBuilder)
{
entityBuilder
.HasAlternateKey(t => t.AdditionalIntField );
}
}
<强>更新强>
呀。我回答得太快,并没有真正关注。您应该使BaseCustomerMap
类通用:
public class BaseCustomerMap<TEntity>
where TEntity : BaseCustomer
{
public BaseCustomerMap(EntityTypeBuilder<TEntity> entityBuilder)
{
entityBuilder
.HasKey(t => t.Id );
entityBuilder.Property(t => t.Id)
.ValueGeneratedOnAdd();
}
}
然后,你可以这样做:
public class CustomerMap : BaseCustomerMap<Customer>
实际上,不管怎样,你都不想配置基类,因为这可能不应该成为你的上下文的一部分。您正在寻找的是能够为BaseCustomer
派生的所有实体共享配置,这些实体会向您发送。