【发布时间】:2011-08-01 11:17:50
【问题描述】:
我正在尝试使用一个通用的 EntityTypeConfiguration 类来为我的所有实体配置主键,这样每个派生的配置类就不会重复。我所有的实体都实现了一个通用接口 IEntity(它表示每个实体都必须有一个 int 类型的 Id 属性)。
我的配置基类如下所示:
public class EntityConfiguration<TEntity> : EntityTypeConfiguration<TEntity>
where TEntity : class , IEntity {
public EntityConfiguration() {
HasKey( e => e.Id );
Property( e => e.Id ).HasDatabaseGeneratedOption( DatabaseGeneratedOption.Identity );
}
}
每个实体都有它自己的特定配置类,像这样扩展这个:
public class CustomerConfiguration : EntityConfiguration<Customer> {
public CustomerConfiguration() : base() {
// Entity specific configuration here
}
}
它编译得很好,但我遇到的问题是,在运行时,当 EF 4.1 RC 尝试创建模型时,我得到了以下异常:
System.InvalidOperationException 是 未处理的消息=关键组件 'Id' 不是一个声明的属性 输入“客户”。确认它有 没有被明确排除在 模型并且它是一个有效的原语 财产。来源=实体框架
如果我将 CustomerConfiguration 类更改为从 EntityTypeConfiguration
- 我在这里做错了吗?
- 还有其他方法可以在实体之间共享通用配置吗?
这里是其他涉及的类供参考:
public interface IEntity {
int Id { get; set; }
}
public class Customer : IEntity {
public virtual int Id { get; set; }
public virtual string name { get; set; }
}
谢谢!
【问题讨论】:
-
我投票结束这个问题,因为它是关于一个候选版本和一个过时的版本。
标签: c# ef-code-first entity-framework-4.1