简体   繁体   中英

sequence contains more than one matching element on Bulk insert

I'm having some issues with grabbing a list of type "SaleToBarbari" through Linq to entity and inserting them into database using bulk insert. I keep getting the error "Sequence contains more than one element". Any ideas? Here is my code:

            var bas = new SaleToFreightageEntities();
            bas.Configuration.AutoDetectChangesEnabled = false;
            bas.Configuration.ValidateOnSaveEnabled = false;
            var L = (from a in bas.Last
                     select a).FirstOrDefault();
            if (L != null)
            {
                Last = Convert.ToInt64(L.LastID);
            }
            var w = (from l in bas.RadifsSendCenter
                     where l.id_rec > Last
                     select new { l.id_rec }).ToList();
            if (w.Count>0 && (w.Last().id_rec > Last))
            {
                bas.Last.Update(t => new Last { BeforLast = L.LastID });
                var q = (from d in bas.RadifsSendCenter
                         where d.id_rec > Last
                         select new
                         {
                             d.id_rec,
                             d.Radifkolsal,
                             d.NameKala,
                             d.ShenaseKala,
                             d.Vazn,
                             d.Bandal,
                             d.NameGreid,
                             d.Dobaskul,
                             d.TedadBas,
                             d.del,
                             d.Tozih,
                             d.NoeShemsh,
                             d.Metrazh,
                             d.Keyfiat,
                             d.Address,
                             d.City,
                             d.Tel,
                             d.ShenaseMeli,
                             d.Shenase,
                             d.Tolid,
                             d.Rahgiry,
                             d.Sefaresh,
                             d.Karbar,
                             d.TimeErsal,
                             d.DateErsal,
                             d.CodePosti
                         }).ToList();
                var u = (from bu in bas.OperatorTable
                         where bu.OperatorName == LoginForm.Username && bu.Type
                         select bu).FirstOrDefault();
var list = q.Select(b => new SaleToBarbari
                {
                    SaleID = b.id_rec,
                    Radifkolsal = TrimEnd(b.Radifkolsal),
                    CodeKala = TrimEnd(b.ShenaseKala),
                    NameKala = TrimEnd(b.NameKala),
                    Bandal = b.Bandal,
                    TedadBaskool = b.TedadBas,
                    Vazn = b.Vazn,
                    del = b.del,
                    Metrazh = b.Metrazh,
                    City = TrimEnd(b.City),
                    ShenaseMeli = TrimEnd(b.ShenaseMeli),
                    Greid = TrimEnd(b.NameGreid),
                    TolidCondition = TrimEnd(b.Tolid),
                    Shenase = TrimEnd(b.Shenase),
                    Keyfiat = b.Keyfiat,
                    Tell = TrimEnd(b.Tel),
                    Address = TrimEnd(b.Address),
                    SaleTozihat = TrimEnd(b.Tozih),
                    NoeShemsh = TrimEnd(b.NoeShemsh),
                    UserReceivedID = u.ID,
                    Rahgiry = TrimEnd(b.Rahgiry),
                    Sefaresh = TrimEnd(b.Sefaresh),
                    CodePosti = TrimEnd(b.CodePosti),
                    SaleOperator = TrimEnd(b.Karbar)
                }).ToList();
                var options = new BulkInsertOptions
                {
                    EnableStreaming = true
                };
                bas.BulkInsert(list, options);

I have searched a lot but nothing helpful. Here is my Stack-trace:

   at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
   at EntityFramework.MappingAPI.Mappers.DbFirstMapper.GetTableName(String typeFullName) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappers\DbFirstMapper.cs:line 88
   at EntityFramework.MappingAPI.Mappers.DbFirstMapper.PrepareMapping(String typeFullName, EdmType edmItem) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappers\DbFirstMapper.cs:line 26
   at EntityFramework.MappingAPI.Mappers.MapperBase.MapEntity(String typeFullName, EdmType edmItem) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappers\MapperBase.cs:line 330
   at EntityFramework.MappingAPI.Mappings.DbMapping..ctor(DbContext context) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappings\DbMapping.cs:line 82
   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 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 96

Finally I found the problem and fixed it. the problem was in my view-tables added to model with mapping wrong same fields, by fixing them the problem gone. Maybe this be helpful for someone.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM