几天前,我遇到了EF中一个最着名的问题,即批量插入.经过一些谷歌搜索我发现:
http://efbulkinsert.codeplex.com/
在使用复杂的数据模型失败后,我回到了一个简单的测试人员.
我正在尝试插入的实体如下所示:
Id – Int
名称 – 字符串
使用VS生成实体,然后使用VS内置功能跟踪数据库.
我尝试了两个EF,4和5.没有工作.例外是:
空间’Csspace’没有相关的集合.
两种数据模型的例外情况相同.
据我所知,我使用了所有依赖项.
代码:
using (Model1Container ctx = new Model1Container()) { List<TestEntity> list = new List<TestEntity>(); for (int i = 0; i < 10; i++) { TestEntity enti = ctx.TestEntitySet.Create(); enti.Name = "stav" + i; list.Add(enti); ctx.TestEntitySet.Add(enti); } ctx.BulkInsert<TestEntity>(list); }
stacktrace是这样的:
at System.Data.Metadata.Edm.MetadataWorkspace.GetItemCollection(DataSpace dataSpace,Boolean required) at System.Data.Metadata.Edm.MetadataWorkspace.GetItemCollection(DataSpace dataSpace) at EntityFramework.MappingAPI.Mappers.MapperBase.get_TphData() in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappers\MapperBase.cs:line 59 at EntityFramework.MappingAPI.Mappers.MapperBase.MapEntity(String typeFullName,EdmType edmItem) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappers\MapperBase.cs:line 284 at EntityFramework.MappingAPI.Mappings.DbMapping..ctor(DbContext context) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappings\DbMapping.cs:line 80 at EntityFramework.MappingAPI.EfMap.Get(DbContext context) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\EfMap.cs:line 60 at EntityFramework.MappingAPI.Extensions.MappingApiExtensions.Db(DbContext ctx,Type type) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Extensions\MappingApiExtensions.cs:line 51 at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source,Func`2 keySelector,Func`2 elementSelector,IEqualityComparer`1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,Func`2 elementSelector) at EntityFramework.BulkInsert.Helpers.MappedDataReader`1..ctor(IEnumerable`1 enumerable,IEfBulkInsertProvider provider) in c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Helpers\MappedDataReader.cs:line 58 at EntityFramework.BulkInsert.Providers.EfsqlBulkInsertProviderWithMappedDataReader.Run[T](IEnumerable`1 entities,sqlTransaction transaction,BulkInsertOptions options) in c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Providers\EfsqlBulkInsertProviderWithMappedDataReader.cs:line 22 at EntityFramework.BulkInsert.Providers.ProviderBase`2.Run[T](IEnumerable`1 entities,IDbTransaction transaction,BulkInsertOptions options) in c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Providers\ProviderBase.cs:line 77 at EntityFramework.BulkInsert.Providers.ProviderBase`2.Run[T](IEnumerable`1 entities,BulkInsertOptions options) in c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Providers\ProviderBase.cs:line 109 at EntityFramework.BulkInsert.Extensions.BulkInsertExtension.BulkInsert[T](DbContext context,IEnumerable`1 entities,sqlBulkcopyOptions sqlBulkcopyOptions,Nullable`1 batchSize) in c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Extensions\BulkInsertExtension.cs:line 95 at EntityFramework.BulkInsert.Extensions.BulkInsertExtension.BulkInsert[T](DbContext context,Nullable`1 batchSize) in c:\dev\EntityFramework.BulkInsert\dev\Src\EntityFramework.BulkInsert\Extensions\BulkInsertExtension.cs:line 75 at TestApp.Program.Main(String[] args) in c:\CCViews\I0T_PIMBuilder_dev\Tashtiot_VOB\PIMBuilder_COMP\TestApp\Program.cs:line 25 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly,String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback callback,Object state,Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,Object state) at System.Threading.ThreadHelper.ThreadStart()
有任何想法吗?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。