3
在我的数据库,我已经叫一表“跟踪”与下列:实体框架:输入“映射为一个复合型”错误
[OrderNumber] [varchar](50) NULL,
[TrackingNumber] [varchar](50) NULL,
[emailaddress] [varchar](100) NULL,
[courier] [varchar](10) NULL
我有一个叫跟踪类来表示从实体表:
public class Tracking
{
public virtual string OrderNumber { get; set; }
public virtual string TrackingNumber { get; set; }
public virtual string EmailAddress { get; set; }
public virtual string Courier { get; set; }
}
在我的数据上下文
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new TrackingConfig());
}
internal class TrackingConfig : EntityTypeConfiguration<Tracking>
{
internal TrackingConfig()
{
Property(x => x.OrderNumber);
Property(x => x.TrackingNumber);
Property(a => a.EmailAddress).HasColumnName("emailaddress");
Property(a => a.Courier).HasColumnName("courier");
}
}
的定义,你可以看到我没有实验值合法地将其作为复杂类型进行铸造。我甚至使用HasColumnName来指定哪些列名称映射到类的哪些属性,以防由于大小写不同而无法识别它们。 (我得到的错误不管是否使用了HasColumnName,因为事实证明。)
当我调用我设置的存储库时,出于任何原因,初始化失败,实体框架抛出异常:
The type 'Tracking' is mapped as a complex type. The Set method, DbSet objects, and DbEntityEntry objects can only be used with entity types, not complex types.
我没有把它设置成一个复杂的类型......为什么EF4像对待它一样?
谢谢 - 删除虚拟和添加注释做了伎俩。我还注意到我的其他表中有一个模式不是“dbo”,必须在注释中设置它。 – AJH