C#学习教程:为什么不能用EntityFramework保存当前的DateTime.Nowvardb=newMyEntities()){varnewGroup=newGroups{GroupDate=DateTime.Now,GroupName="someName"};db.Groups.Add(新组);db.SaveChanges();交易完成();GroupId和GroupDate是PK,GroupId是Identity(step=1)而GroupDate不是谁能告诉我为什么在使用这样的简单代码时会发生此异常,如果可能的话如何关闭乐观并发更新存储更新、插入或删除语句会影响意想不到的行数(0)。实体在加载后可能已被修改或删除。刷新ObjectStateManager条目。这很可能是.NETDateTime类型的不同精度和您在SQLServer中使用的列类型的问题-可能是日期时间。使用SaveChanges发送到数据库的INSERT语句看起来像这样:execsp_executesqlN'insert[dbo].[Groups]([GroupDate],[GroupName])values(@0,@1)select[GroupId]from[dbo]。[Groups]where@@ROWCOUNT>0and[GroupId]=scope_identity()and[GroupDate]=@0',N'@0datetime2(7),@1nvarchar(50)',@0='2013-09-0114:21:44.5156250',@1=N'someName'.NETDateTime存储小数点后7位数字:.5156250。但是SQLdatetime类型不能存储它,因为它精度较低,存储值后会截掉一些数字。所以where子句中的比较[GroupDate]=@0返回false,EF得到没有存储任何东西的信息(虽然实际上执行了INSERT),取消事务并抛出异常。据我所知,您只能通过以下更改之一来解决此问题:不要关闭OptmisticConcurrencyUpdates,您将隐藏问题而不是修复它。执行以下操作:db.Groups。添加(新组);db.SaveChanges();交易完成();不同之处在于您现在正在DBContext中创建TranscationScope我希望这会解决您的问题。以上是C#学习教程:为什么我不能用EntityFramework保存当前的DateTime。代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
