【发布时间】:2013-12-22 14:29:28
【问题描述】:
我正在尝试在现有数据库上创建模型。
我目前有以下实体映射:
public class TripDriverMap : EntityTypeConfiguration<TripDriver>
{
public TripDriverMap()
{
// Primary Key
this.HasKey(t => t.TripDriverMapID);
// Properties
// Table & Column Mappings
this.ToTable("slx_TripDriverMap");
this.Property(t => t.TripDriverMapID).HasColumnName("TripDriverMapID");
...
this.Property(t => t.DriverID).HasColumnName("EntityID");
// Relationships
...
this.HasRequired(t => t.Driver)
.WithMany(t => t.TripDrivers)
.HasForeignKey(d => d.DriverID);
...
}
}
public class DriverMap : EntityTypeConfiguration<Driver>
{
public DriverMap()
{
// Primary Key
this.HasKey(t => t.ID);
...
this.Property(t => t.ID)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
this.Property(t => t.OwnerEntityID)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
// Table & Column Mappings
this.ToTable("slx_vw_Drivers");
...
this.Property(t => t.ID).HasColumnName("EntityID");
...
}
}
如果您仔细观察,我有一个名为 EntityID 的列,我已将其映射到属性 DriverID。每当我尝试从任一方包含相关实体时,都会收到以下错误:
列名“EntityPerson_EntityPersonID”无效。
这是因为正在生成的部分SQL如下:
[Extent1].[EntityPerson_EntityPersonID] AS [EntityPerson_EntityPersonID]
FROM [dbo].[slx_TripDriverMap] AS [Extent1]
INNER JOIN [dbo].[slx_vw_Drivers] AS [Extent2] ON [Extent1].[EntityID] = [Extent2].[EntityID]
如您所见,它正在寻找一个名为 EntityPerson_EntityPersonID 的列,该列不存在。 它确实加入了正确的列
我无法重命名 TripDriverMap 表中的列,因为它在很多地方都在使用,包括在数据库、应用程序和报告中。
我怎样才能让它工作?我已经完成了我认为在 TripDriverMap 映射定义中必须做的所有事情
【问题讨论】:
标签: entity-framework entity-framework-5