我正在使用.NET 4.5和Entity Framework 6.0构建WPF应用程序,以将C#对象映射到SQL Server 2008数据库。我收到这样的System.Data.Entity.Infrastructure.DbUpdateException
:
SqlException:在SET子句中多次指定了列名'InstructionID'
异常是针对目标表中的每个属性/列的,只有在我将主键最初定义为{{1之后,才删除并重新创建目标数据库表以使用基于标识的int主键之后,才会发生这种情况。 }}数据类型。
我原来的C#类和表如下。此配置正常运行:
varchar
此版本发生错误...
public class UnitInstruction
{
[Key] public string instructionID { get; set; }
public int? unitID { get; set; }
public string propertyOne { get; set; }
public string propertyTwo { get; set; }
}
public class UnitInstructionMap : EntityTypeConfiguration<UnitInstruction>
{
public UnitInstructionMap()
{
ToTable("UnitInstructions");
HasKey(i => i.InstructionID);
Property(i => i.InstructionID).HasColumnName("InstructionID");
Property(i => i.UnitID).HasColumnName("UnitID");
Property(i => i.PropertyOne).HasColumnName("PropertyOne");
Property(i => i.PropertyTwo).HasColumnName("PropertyTwo");
}
}
CREATE TABLE [RealEstate].[UnitInstructions](
[InstructionID] [varchar](20) NOT NULL,
[UnitID] [int] NULL,
[PropertyOne] [varchar](10) NULL,
[PropertyTwo] [varchar](250) NULL,
CONSTRAINT [PK_CommercialRealEstate.RetailUnitInstructions] PRIMARY KEY CLUSTERED
(
[InstructionID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
在EF中是否还需要更新任何隐藏文件以使新配置正常工作?我只是直接在VS2017中编辑代码,而没有在IDE中使用任何建模工具或向导等。