所以即時嘗試向實體添加實例時遇到了這個奇怪的問題。它是一個使用EF 6.0的asp.net應用程序。無法將NULL插入到列中,但值不爲空
例外:
SQLEXCEPTION:無法將NULL值插入列 '的OrderId', 表 'BETA.MDF.dbo.Orders';列 不允許有空值。 INSERT失敗。該語句已終止。
我的代碼:
User user = (User)Session["CurrentUser"];
BetaEntities entities = new BetaEntities();
Beta.Order order = new Beta.Order();
order.OrderId = Guid.NewGuid().ToString();
order.OrderDate = DateTime.Now;
order.OrderedBy = user.UserId;
order.HandledBy = entities.Users.Where(x => x.Rank > 0).Select(i => i.UserId).FirstOrDefault();
entities.Orders.Add(order);
entities.SaveChanges();
而且這是我的訂單班,我已經嘗試過[Databasegenerated]
public partial class Order
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string OrderId { get; set; }
public System.DateTime OrderDate { get; set; }
public int OrderedBy { get; set; }
public int HandledBy { get; set; }
}
示例項:
編輯:
我嘗試設置的OrderID的數據庫數據類型,以UNIQUEIDENTIEFIER和更新的實體模型,數據庫應產生的GUID(我刪除本身,但我仍然得到同樣的異常
這是我的新類:
public partial class Order
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public System.Guid OrderId { get; set; }
public System.DateTime OrderDate { get; set; }
public int OrderedBy { get; set; }
public int HandledBy { get; set; }
}
編輯:
,如果我做的OrderID NULLABALE並刪除主鍵,我得到以下異常:
System.Data.Entity.Infrastructure.DbUpdateConcurrencyException:「商店更新,插入或刪除語句影響意外數量的行(0)。自實體加載後,實體可能已被修改或刪除。有關理解和處理樂觀併發異常的信息,請參閱http://go.microsoft.com/fwlink/?LinkId=472540。'
但是這可以通過添加一個主鍵:(所以去除PK並使其NULLABLE心不是工作來解決。
此外,我需要分配給自己的GUID進一步的目的,從而讓數據庫分配GUID本身(與[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
)也不是一個選項。
看到[this](http://stackoverflow.com/questions/8855100/why-is-ef-trying-to-insert-null-in-id-column)不確定,但它可能會幫助你,祝你好運 –
您會得到非常明確的異常消息:_Cannot無法將值NULL插入到'OrderId'列中,因爲列不允許爲nulls_。只需設置列以允許「NULL」值。 – Fabio
身份字符串是無用 – brykneval