C# entity framework mysql List<string>

C# entity framework mysql List<string>
2012-08-08T13:42:37+02:00
2012-08-08T17:28:00+02:00
2022-11-26T13:20:38+01:00
puzzafutár
Hello,
MySQL adatbázis egyik táblájában akarom eltárolni egy string típusú lista elemeit, de úgy, hogy minden elem külön rekord legyen. Entity Framework-öt használok és nem tudjuk, hogy a listának hány eleme van, mert minden alkalommal más.
Próbáltam for ciklussal de úgy behal. egyéb ötlet?
Mutasd a teljes hozzászólást!
Húúú... hát vannak ezzel gondok...

A normális működést úgy képzeld el, hogy a memóriában össze kell raknod a context-ben a változtatásokat, aztán egy darab SaveChanges()-t hívva az egész egy tranzakcióban el lesz mentve.

Két különböző adatbázist használsz (context és context2), vagy valójában egy van, csak két context objektumot hoztál létre kínodban (ami butaság)?

Kettő: ez a kód így eléggé hiányos, pl. az sem derül ki, hogy a
tartalom
pontosan micsoda.

Mivel így csak találgatni lehet, mit is szeretnél, itt egy példakód a tiéd alapján (egy darab context objektummal), hogy kb. hogyan kell elképzelni a helyes működést:

adatbazisContainer context = new adatbazisContainer(); // ha pontosan egyet vársz, célszerű a Single()-t használni, // mivel az exception-t dob, ha nem pontosan egy record jön vissza. var id = (from p in context.disks where p.SorozatSz == lemez.SorozatSz select p.Id).Single(); for (int i = 0; i < tartalom.Count; i++) { Tartalom tart = new Tartalom(); tart.DiskId = id; tart.Neve = tartalom[i]; context.tartalom.AddObject(tart); } context.SaveChanges();
Mutasd a teljes hozzászólást!

  • Próbáltam for ciklussal de úgy behal

    Bocsi, de e kódod megmutatnád?
    Mutasd a teljes hozzászólást!
  • var query = from p in context.disks where p.SorozatSz==lemez.SorozatSz select p; Tartalom tart = new Tartalom(); tart.DiskId = query.FirstOrDefault().Id; for (int i = 0; i < tartalom.Count; i++) { adatbazisContainer context2 = new adatbazisContainer(); tart.Neve = tartalom[i]; context2.tartalom.AddObject(tart); context2.SaveChanges(); }
    A tart nevű változóban mindig csak a "Neve" változik (azt szedem ki a tartalom nevű listából), a "DiskId"-t a ciklus előtt lekezelem és nem is bántom többet.
    szerintem nem tud olyan gyorsan menteni az adatbázisba, ahogy a ciklus halad.
    Mutasd a teljes hozzászólást!
  • Húúú... hát vannak ezzel gondok...

    A normális működést úgy képzeld el, hogy a memóriában össze kell raknod a context-ben a változtatásokat, aztán egy darab SaveChanges()-t hívva az egész egy tranzakcióban el lesz mentve.

    Két különböző adatbázist használsz (context és context2), vagy valójában egy van, csak két context objektumot hoztál létre kínodban (ami butaság)?

    Kettő: ez a kód így eléggé hiányos, pl. az sem derül ki, hogy a
    tartalom
    pontosan micsoda.

    Mivel így csak találgatni lehet, mit is szeretnél, itt egy példakód a tiéd alapján (egy darab context objektummal), hogy kb. hogyan kell elképzelni a helyes működést:

    adatbazisContainer context = new adatbazisContainer(); // ha pontosan egyet vársz, célszerű a Single()-t használni, // mivel az exception-t dob, ha nem pontosan egy record jön vissza. var id = (from p in context.disks where p.SorozatSz == lemez.SorozatSz select p.Id).Single(); for (int i = 0; i < tartalom.Count; i++) { Tartalom tart = new Tartalom(); tart.DiskId = id; tart.Neve = tartalom[i]; context.tartalom.AddObject(tart); } context.SaveChanges();
    Mutasd a teljes hozzászólást!
  • Ez az! Már nem láttam tisztán a problémát! megoldódott azzal, hogy nem minden ciklus futáskor kell menteni a változásokat, hanem elég a végén is :) jó vak voltam... a 2. context-et azért hoztam létre, mert hátha az a baja.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd