我插入新行使用实体框架的数据库表,但我的问题是,列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