我插入新行使用實體框架的數據庫表,但我的問題是,列ValidFromDate
導致異常使用實體框架插入行具有複合鍵
屬性表「ValidFromDate」是對象的密鑰信息 一部分並且不能被修改的日期
我們DBA已定義的數據庫和圖像下面是EDMX文件的快照。 ValidFromDate
是datetime列。
FarmAnimal
的想法是追蹤某些動物的歷史。因此AnimalId
和ValidFromDate
導致該行是唯一的。
現在的問題是,我怎麼可以插入新的行到這種模式的表?
插入使用實體框架
var farmAnimal = new FarmAnimal {
AnimalId = insert.AnimalId,
ValidFromDate = insert.ValidFromDate // exception comes from this line,
etc.
};
entities.FarmAnimals.Add(farmAnimal);
更新:堆棧跟蹤
at System.Data.Objects.EntityEntry.DetectChangesInProperties(Boolean detectOnlyComplexProperties)
at System.Data.Objects.ObjectStateManager.DetectChangesInScalarAndComplexProperties(IList`1 entries)
at System.Data.Objects.ObjectStateManager.DetectChanges()
at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
at System.Data.Entity.DbSet`1.Add(TEntity entity)
at xxx.Repositories.PairingRepository.UpdateFarmAnimals(IEnumerable`1 updates, IEnumerable`1 inserts) in xxx
at xxx.Services.PairingService.RemovePairingAnimals(List`1 animalIds) in xxx
at xxx.Controllers.PairingController.RemovePairingAnimals(List`1 animalIds) in xxx
at lambda_method(Closure , ControllerBase , Object[])
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
更新2:實體框架文件
我加入了三個文件實體框架的映射文件/發電機 EDMX文件 ADO.NET的DbContext發電機 ADO.NET EntityObject生成器(POCO的)
在什麼時候發生異常?保存更改時,其中一個設置器ObjectSet.Add方法?你可以發佈堆棧跟蹤嗎? – cynic 2012-02-15 08:48:18
@cynic查看關於源代碼塊的評論。我現在會得到堆棧跟蹤。感謝您的時間。 – Tx3 2012-02-15 08:52:19
我看到你正在使用DbSet/DbContext包裝圖層。實體POCO,還是它們是使用所有變更跟蹤邏輯生成的? – cynic 2012-02-15 09:45:53