我有这个POCO课程
public class EfectoC
{
public int Id { get; set; }
}
和EF配置:
public class EfectoCMap : EntityTypeConfiguration<EfectoC>
{
public EfectoCMap()
{
// Primary Key
this.HasKey(t => t.Id );
// Properties
this.Property(t => t.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None );
}
}
真的很简单,
问题在于我这样做:
EfectoC efC= new EfectoC();
efC.Id = 44;
引发此异常: 属性“Id”是对象关键信息的一部分,无法修改
为什么会这样?我有DatabaseGeneratedOption.None所以我可以编写pk,特别是在新实例中。
有什么想法吗?
提前感谢
答案 0 :(得分:0)
Id
不可为空,因此当您使用EfectoC efC= new EfectoC()
调用构造函数时,Id
设置为零,并且Entity Framework不允许您在设置主键后更改主键。
您有两个选择:
添加一个将Id作为参数的构造函数
public EfectoC(int id)
{
Id = id;
}
使Id可以为空:
public int? Id { get; set; }