我正在使用Entity Framework 6.
我有一个表格,里面有一个名为Tests的测试信息.我通过首先获取测试列表,为每个测试执行删除然后提交来删除此表中的行.
var testList = _testService.GetTests(1, userId).ToList();
testList.ForEach(_obj => _uow.Tests.Delete(_obj));
_uow.Commit();
Run Code Online (Sandbox Code Playgroud)
我有另一个表格,其中包含问题信息.我想做同样的事情,但这张表中有超过1000行.如果我将它们全部列出然后执行1,000次删除将不会非常有效.
这种问题的删除并不经常发生.有没有人建议如何做到这一点.我应该做1000次删除吗?使用EF做这种事情是正常的吗?
我正在将我公司的应用程序(现在运行在SQL Server和Oracle上)迁移到ASP NET MVC和实体框架以实现持久性.
分别创建基于SQL Server数据库e的实体模型我为Oracle创建了一个SSDL(对于Oracle我使用DevArt dotConnect for Oracle Provider),我遇到了一些痛苦的麻烦.
我的表主键在SQL Server上是十进制类型(13,0),在Oracle上是数字(13,0)但是Oracle将它的类型映射到Int64和SQL Server到十进制,但我需要SQL Server将它映射到Int64 .
我在实体数据模型上手动进行这些修改,并且对于创建记录,它工作正常,但是当我必须删除或更新某些记录时,我收到了以下错误:
指定的值不是'Edm.Decimal'类型的实例参数名称:value
在System.Data.Common.CommandTrees.DbConstantExpression..ctor(DbCommandTree commandTree,Object value,TypeUsage constantType)
处于System的System.Data.Mapping.Update.Internal.UpdateCompiler.GenerateValueExpression(DbCommandTree commandTree,EdmProperty属性,PropagatorResult值)
.
System.Data.Mapping.Update.Internal.UpdateCompiler.BuildPredicate(DbModificationCommandTree commandTree,PropagatorResult referenceRow,PropagatorResult current,TableChangeProcessor processor,Boolean&rowMustBeTouched )中的Data.Mapping.Update.Internal.UpdateCompiler.GenerateEqualityExpression(DbModificationCommandTree commandTree,EdmProperty属性,PropagatorResult值)) System.Data.Mapping.Update.Update.Update.Update.Update.Internal.TableChangeProcessor.CompileCommands(ChangeNode changeNode,UpdateCompiler编译器)
中的System.Data.Mapping.Update.Internal.UpdateCompiler.BuildDeleteCommand(PropagatorResult oldRow,TableChangeProcessor处理器
)
有人可以帮帮我吗?
为什么实体框架映射如此固定?它可以更灵活吗?
Ps.:我得到的错误,我怀疑是因为一个关联.
我有一个名为省的实体和另一个名为Country的实体,我认为这些实体之间的关联在更新和删除时导致了问题.
问候,
Douglas Aguiar