我正試圖在現有數據庫上創建模型。實體框架代碼優先映射問題
目前,我有以下實體映射:
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