作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的数据库中,我有一个名为“tracking”的表,其中包含以下列:
[OrderNumber] [varchar](50) NULL,
[TrackingNumber] [varchar](50) NULL,
[emailaddress] [varchar](100) NULL,
[courier] [varchar](10) NULL
我有一个名为 Tracking 的类来表示表中的实体:
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,我遇到的错误都会发生。)
当我出于任何原因调用我设置的存储库时,初始化失败并且 Entity Framework 抛出异常:
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 将其视为复杂类型?
最佳答案
看起来它与将字段声明为虚拟字段有关。您还可以使用数据注释来覆盖表名和列名以匹配现有的数据库架构。下面是我将如何设置 POCO 模型和 dbcontext。
[Table("tracking")]
public class Tracking
{
public string OrderNumber { get; set; }
public string TrackingNumber { get; set; }
[Column(Name = "emailaddress")]
public string EmailAddress { get; set; }
[Column(Name = "courier")]
public string Courier { get; set; }
}
public class TrackingEntities : DbContext
{
public DbSet<Tracking> Trackings { get; set; }
}
关于.net - Entity Framework : Type "mapped as a complex type" Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14404813/
我是一名优秀的程序员,十分优秀!