0
我有以下EF4代碼優先類:EF4代碼優先增加一個實體與虛擬導航屬性空的1對多
[Serializable]
public class WOChangeLogHeader
{
[Key]
public int WOChangeLogHeaderId { get; set; }
public DateTime tadded { get; set; }
public virtual WorkOrderHeader WO { get; set; }
public int WorkOrderHeaderId { get; set; }
[MaxLength(50)]
public string chng_type { get; set; }
[MaxLength(50)]
public string chng_process { get; set; }
public int chng_by { get; set; }
public virtual ICollection<WOChangeLog> ChangeLogRecords {get;set;}
}
[Serializable]
public class WOChangeLog
{
[Key]
public int WOChangeLogId { get; set; }
public DateTime tadded { get; set; }
public virtual WOChangeLogHeader ChangeLogHeader { get; set; }
public int WOChangeLogHeaderId { get; set; }
[MaxLength(50)]
public string chng_field { get; set; }
public string old_value { get; set; }
public string new_value { get; set; }
}
和設置添加新WoChangeLogHeader的,像這樣:
private void addWOChangeLogRecord(string chgField, string oldVal, string newVal, WorkOrderHeader wo)
{
WOChangeLog log = new WOChangeLog();
log.chng_field = chgField.Trim();
log.old_value = oldVal == null ? "-NULL VALUE-" : oldVal.Trim();
log.new_value = newVal == null ? "-NULL VALUE-" : newVal.Trim();
log.tadded = DateTime.Now;
if (CurrentWOChangeLogHeader == null)
{
CurrentWOChangeLogHeader = new WOChangeLogHeader();
CurrentWOChangeLogHeader.WO = wo;
CurrentWOChangeLogHeader.WorkOrderHeaderId = wo.WorkOrderHeaderId;
CurrentWOChangeLogHeader.chng_by = -2;
CurrentWOChangeLogHeader.chng_process = "WindowsService";
CurrentWOChangeLogHeader.chng_type = "Auto-Update";
CurrentWOChangeLogHeader.tadded = DateTime.Now;
}
CurrentWOChangeLogHeader.ChangeLogRecords.Add(log); // Error here
}
但是在這一點上ChangeLogRecords導航屬性爲空,所以我得到一個空對象引用錯誤...
但是,如果我嘗試添加WOChangeLogHeader不添加任何的孩子,所以塔t我隨後可以參考它:
WOChangeLog log = new WOChangeLog();
log.chng_field = chgField.Trim();
log.old_value = oldVal == null ? "-NULL VALUE-" : oldVal.Trim();
log.new_value = newVal == null ? "-NULL VALUE-" : newVal.Trim();
log.tadded = DateTime.Now;
log.ChangeLogHeader = CurrentWOChangeLogHeader;
然後我得到以下錯誤?
操作失敗:無法更改關係,因爲一個或多個外鍵屬性是不可空的。當對關係進行更改時,相關的外鍵屬性將設置爲空值。如果外鍵不支持空值,則必須定義新的關係,必須爲外鍵屬性指定另一個非空值,或者必須刪除不相關的對象。
它不會讓我上的SaveChanges上下文時ChangeLogRecords爲空要麼...
如何添加一個新的實體,它是一個1到很多這樣的關係中的父?
由於 格雷格