在实体框架中更改主键后出现错误

时间:2019-01-14 10:16:23

标签: c# entity-framework sql-server-2008

我正在使用.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中使用任何建模工具或向导等。

0 个答案:

没有答案