2016-10-06 3 views
1

Ich habe einige Probleme beim Ergreifen einer Liste des Typs "SaleToBarbari" durch Linq zu Entität und Einfügen von ihnen in die Datenbank mit Massen einfügen. Ich bekomme immer den Fehler "Sequenz enthält mehr als ein Element". Irgendwelche Ideen? Hier ist mein Code:Sequenz enthält mehr als ein passendes Element auf Bulk einfügen

  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); 

ich hilfreich viel, aber nichts gesucht. Hier ist mein 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 
+2

Sie haben irgendwo "Single" verwendet, aber es gab mehr als ein Element, das nicht erlaubt ist. Verwenden Sie 'First' oder korrigieren Sie die Abfrage/Inkonsistenzen. Sie sollten diesen Code auch anzeigen. –

+0

Ich habe keine Single in meiner Datei verwendet. Ich füge meinen gesamten Code hinzu. – kavir

+2

@TimSchmelter: Wie Sie aus dem Stack-Trace sehen können, hat das OP nicht 'Single' aufgerufen. Es heißt von hier: [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

Antwort

0

Schließlich fand ich das Problem und reparierte es. Das Problem war in meiner Sicht-Tabellen hinzugefügt, um mit dem Mapping falsche Felder zu modellieren, indem sie das Problem behoben. Vielleicht ist das für jemanden hilfreich.

Verwandte Themen