我有以下型号:
Services.StradaDataReview2Model.UOSChangeLog:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public int Accident_nr { get; set; }
public int Refnr { get; set; }
public int Action { get; set; }
public string Old_data { get; set; }
public string New_data { get; set; }
public DateTime SearchedFromDate { get; set; }
public DateTime SearchedToDate { get; set; }
public DateTime Changed { get; set; }
public string Username { get; set; }
public string Comment { get; set; }
Contracts.DataContracts.UOSChangeLog
public class UOSChangeLog
{
public int Id { get; set; }
public int Accident_nr { get; set; }
public int Refnr { get; set; }
public int Action { get; set; }
public string Old_data { get; set; }
public string New_data { get; set; }
public DateTime SearchedFromDate { get; set; }
public DateTime SearchedToDate { get; set; }
public DateTime Changed { get; set; }
public string Username { get; set; }
public string Comment { get; set; }
}
我是如何插入的:
internal static bool SaveUOSChangeLog(List<Contracts.DataContracts.UOSChangeLog> values, string user)
{
try
{
using (var ctx = new StradaDataReviewContext2())
{
var newVal = Mapper.Map<List<Contracts.DataContracts.UOSChangeLog>, List<Services.StradaDataReview2Model.UOSChangeLog>>(values);
foreach(var val in newVal)
{
val.Username = user;
val.Changed = DateTime.Now;
ctx.UOSChangeLog.Add(val);
}
ctx.SaveChanges();
return true;
}
}
}
当我运行代码时,出现以下错误:
InnerException = {“无法将值NULL插入列'Id', 表'StradaDataReview.dbo.UOSChangeLog';列不允许 空值。 INSERT失败。\ r \ n语句已终止。“}
如何自动增加Id
列?
答案 0 :(得分:3)
我猜您正在使用Code First,按惯例,它会将Id属性设置为相应表中的主键,默认情况下将其定义为“Identity”。我认为没有必要设置[DatabaseGenerated(DatabaseGeneratedOption.Identity)]属性。我首先检查数据库,看看在相应的表中是否已将Id列创建为Identity列。您还使用Fluent API定义任何内容吗?
答案 1 :(得分:2)
这是注释自动增量字段的方法
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
答案 2 :(得分:0)
尝试添加:[DatabaseGenerated(DatabaseGeneratedOption.None)]
而不是Identity
在您的ID字段中,例如:
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
答案 3 :(得分:-1)
您的ID是主键 - 因此不允许使用空值。这是因为您的记录ID必须是唯一的。