我正试图在现有数据库上创建模型。实体框架代码优先映射问题
目前,我有以下实体映射:
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映射定义做
不幸的是,没有奏效 - 我得到一个错误,说该属性已被定义。 –
当你用'Map'添加'HasRequired'时,是否删除了'Driver.'的'this.Property'声明?否则,该错误将是正确的。 – TRayburn