无法将值 NULL 插入列 'ID'、table 'XXX' (Entity framework)
Cannot insert the value NULL into column 'ID', table 'XXX' (Entity framework)
我尝试通过添加对象,它抛出如上所述的错误。我的 ID 列是 NOT NULL
而没有 Identity
。我的代码如下。我也在为 ID 赋值。
我已根据 SO Thread 在上下文 class 中为此 属性 添加属性 [DatabaseGenerated(DatabaseGeneratedOption.None)]
,但不起作用。
int id = context.CreditApps.Max(x => x.ID);
if (id != null && id != 0)
{
newCreditAppId = id + 1;
objCredit.ID = newCreditAppId;
}
objCredit.IsActive = true;
context.DTOriginalCreditApps.AddObject(objCredit);
context.SaveChanges();
上下文class
#region Primitive Properties
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DatabaseGenerated(DatabaseGeneratedOption.None)] //Added later
[DataMemberAttribute()]
public global::System.Int32 Id
{
get
{
return _Id;
}
set
{
if (_Id != value)
{
OnIdChanging(value);
ReportPropertyChanging("Id");
_Id = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Id");
OnIdChanged();
}
}
}
我只是更改了 edmx 文件的 XML SSDL 中提到的实体的 ID 列的属性 StoreGeneratedPattern="None"
。
基本上,当您的 table 不包含没有身份的主键时,就会发生此运行时异常。
我尝试通过添加对象,它抛出如上所述的错误。我的 ID 列是 NOT NULL
而没有 Identity
。我的代码如下。我也在为 ID 赋值。
我已根据 SO Thread 在上下文 class 中为此 属性 添加属性 [DatabaseGenerated(DatabaseGeneratedOption.None)]
,但不起作用。
int id = context.CreditApps.Max(x => x.ID);
if (id != null && id != 0)
{
newCreditAppId = id + 1;
objCredit.ID = newCreditAppId;
}
objCredit.IsActive = true;
context.DTOriginalCreditApps.AddObject(objCredit);
context.SaveChanges();
上下文class
#region Primitive Properties
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DatabaseGenerated(DatabaseGeneratedOption.None)] //Added later
[DataMemberAttribute()]
public global::System.Int32 Id
{
get
{
return _Id;
}
set
{
if (_Id != value)
{
OnIdChanging(value);
ReportPropertyChanging("Id");
_Id = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Id");
OnIdChanged();
}
}
}
我只是更改了 edmx 文件的 XML SSDL 中提到的实体的 ID 列的属性 StoreGeneratedPattern="None"
。
基本上,当您的 table 不包含没有身份的主键时,就会发生此运行时异常。