1

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
kavir
  • 35
  • 7
  • 2
    You have somewhere used `Single`, but there was more than one item which is not allowed. Use `First` or fix the query/inconsistencies. You should also show that code. – Tim Schmelter Oct 06 '16 at 10:06
  • I don't used any Single in my file. I add all of my code. – kavir Oct 06 '16 at 10:13
  • 2
    @TimSchmelter: As you can see from the stack trace the OP didn't call `Single`. It is called from here: [https://efmappingapi.codeplex.com/SourceControl/latest#trunk/src/EntityFramework.MappingAPI/Mappers/DbFirstMapper.cs](https://efmappingapi.codeplex.com/SourceControl/latest#trunk/src/EntityFramework.MappingAPI/Mappers/DbFirstMapper.cs) – Fratyx Oct 06 '16 at 10:14
  • but how can I fix it? – kavir Oct 06 '16 at 10:18
  • The problem might be in the properties of your class. Look [here](http://stackoverflow.com/questions/25233769/sequence-contains-more-than-one-element-error-in-ef-cf-migrations) or [here](http://stackoverflow.com/questions/8855833/sequence-contains-more-than-one-matching-element-adding-item-with-entiity-fram) – Fratyx Oct 06 '16 at 10:24
  • I double checked the properties of my class but nothing found, I am so confused. – kavir Oct 06 '16 at 11:01
  • Sorry there are too many unknown aspects in your problem for me. Try googling `sequence contains more than one matching element entity framework`. It seems to be a frequent problem. – Fratyx Oct 06 '16 at 12:43
  • OK, tanks by the way. I will find the problem – kavir Oct 06 '16 at 13:14

1 Answers1

0

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.

kavir
  • 35
  • 7