![](/img/trans.png)
[英]Entity Framework Non Identity - Cannot insert the value NULL into column 'ID'
[英]Cannot insert the value NULL into column 'Id', Entity framework
我有以下模型:
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
列自動遞增?
我猜您正在使用 Code First,按照慣例,它會將 Id 屬性設置為相應表中的主鍵,默認情況下,該表將被定義為“身份”。 我認為沒有必要設置 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 屬性。 我將首先檢查數據庫以查看是否在相應的表中將 Id 列創建為 Identity 列。 你還在使用 Fluent API 定義任何東西嗎?
這是您注釋自動遞增字段的方式
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
嘗試添加: [DatabaseGenerated(DatabaseGeneratedOption.None)]
而不是Identity
在您的 ID 字段中,例如:
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
您的 ID 是主鍵 - 因此不允許出現空值。 這是因為您的記錄 ID 必須是唯一的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.