- Crypto Trade
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Hálózati / IP kamera
- Hálózatokról alaposan
- Xiaomi AX3600 WiFi 6 AIoT Router
- Sokat fogyaszt az AI, egyre több az adatközpont, kell az atomenergia
- Az iPadOS-re írt appokra is díjat vet ki az Apple
- Letartóztatták a bitcoin-Jézust
- ASUS routerek
Új hozzászólás Aktív témák
-
moseras
tag
Sziasztok!
Próbálom megérteni az Entity Framework 5/MVVM light/MySQL hármast. Első körben abban kérnék segítséget, hogy miként implementáljam azt, hogy az adatbázisban változás történt, és a ViewModel-em ezt észrevegye.
Tehát nem arra gondolok, hogy a programom kívül valaki más módosítja az adatbázist, és azt vegye észre, hanem ha én módosítom, akkor azt lássam. Az DbContext-ből származó xxxEntities osztályban nem látok változás értesítő event-et. Tehát akkor nekem kell egy plusz réteget felhúzni a ViewModel és az Entities közé ?
Eddig azt hittem, hogy maga az Entities-em a Model réteg, ezek szerint nem ?
Más: ha valaki rajtam kívül futás közben módosítja a táblát, azt az Entity framework észreveszi ?
Imi.
-
moseras
tag
Sziasztok!
MySQL-t használok Entity FrameWork 6-al. Működik, kivétel az async/await lehetőség, amit az EF6 elvileg tud.
Kód:
public void I2(List<data> dataList)
{
Debug.Print("I2 előtt");
InsertAsync(dataList);
Debug.Print("I2 után");
}
public async void InsertAsync(List<data> dataList)
{
using (var ctx = new adatgyujtesEntities())
{
ctx.Configuration.AutoDetectChangesEnabled = false;
ctx.Configuration.ValidateOnSaveEnabled = false;
foreach (var item in dataList)
{
ctx.data.Add(item);
}
Debug.Print("await előtt");
await ctx.SaveChangesAsync();
//await Task.Delay(4000);
Debug.Print("await után");
}
}Ha az I2-t meghívom, akkor ezt kapom:
I2 előtt
await előtt
await után
I2 utánHa az await ctx.SaveChangesAsync(); sort kikommentezem, és helyette beteszem az await Task.Delay(4000);-t, akkor pedig ezt:
I2 előtt
await előtt
I2 után
await utánTehát mint ha a SaveChangesAsync szinkron működne ? Vagy valamit félreértek ?
És még valami: a UI is akad rendesen, a SaveChangesAsync közben sem mozgatni, sem méretezni nem lehet az ablakot, de a Task.Delay közben működik a mozgatás/méretezés.
Köszi!
Imi.
[ Szerkesztve ]
-
moseras
tag
válasz martonx #5308 üzenetére
Szia!
Úgy tudom, hogy mivel az InsertAsync async void-ként van megadva, ezért annak a hívóhoz vissza kell(ene) térnie a benne lévő await hatására (és persze az await indít egy új taszkot, aminek végeztével az await alatt folytatódik). Érdekesnek találnám, ha ez egyszer így, egyszer úgy működne. Arra is gondoltam, hogy esetleg a MySQL EF6 megvalósítása nem kerek valahol. Mivel a UI szál is teljesen lefagy a SaveChangeAsync alatt, ezért nem tudok másra gondolni, valami miatt szinkron módon ugyanabban a UI szálban fut.
Imi.
-
moseras
tag
válasz moseras #5307 üzenetére
Sziasztok!
Akit esetleg érdekel, MySQL és EF6 async/await probléma átmeneti megoldása:
E helyett
await ctx.SaveChangesAsync();
Ezt használva
await Task.Factory.StartNew(() =>
{
ctx.SaveChanges();
});külön szálon indul el, és a UI is reszponzív marad. Hogy miért van így, azt továbbra sem értem, de a lényeg, hogy így működik.
Imi.
[ Szerkesztve ]
-
moseras
tag
válasz RedHarlow #8731 üzenetére
Üdv!
List<string> words = new List<string> { "class", "xml", "xlsx", "teszt" };
string patt = string.Join("|", words);
Regex regex = new Regex(patt, RegexOptions.IgnoreCase);
string v = "class asdfgh 123 xml8 xls xlsx15 xml xlsx";
int appcount = regex.Matches(v).Count;
Console.WriteLine(appcount);Azt írja ki, hogy 5
[ Szerkesztve ]
-
moseras
tag
válasz RedHarlow #8738 üzenetére
Üdv,
Egyetértek az előttem hozzászólokkal, néhány megjegyzésem lenne:
string filesdir = Path.Combine(@"C:\tmp", "files");
// Összes
Console.WriteLine("Összes");
string[] files = Directory.GetFiles(filesdir);
foreach (var item in files)
{
Console.WriteLine(item);
}
Console.WriteLine($"{files.Length} db");
// A GetFiles szűrője alapján (a GetFiles nem támogatja a Regex-et)
Console.WriteLine();
Console.WriteLine("A GetFiles szűrője alapján");
files = Directory.GetFiles(filesdir, "REF*.xml");
foreach (var item in files)
{
Console.WriteLine(item);
}
Console.WriteLine($"{files.Length} db");
// Regex-el tovább szűrve
Console.WriteLine();
Console.WriteLine("Regex-el tovább szűrve");
Regex reg = new Regex(@"REF\w+\d+\w+\.xml", RegexOptions.IgnoreCase);
var rfiles = Directory.GetFiles(filesdir, "REF*.xml")
.Where(path => reg.IsMatch(path))
.ToList();
foreach (var item in rfiles)
{
Console.WriteLine(item);
}
Console.WriteLine($"{rfiles.Count} db");Eredmény:
Összes
C:\tmp\files\1.xml
C:\tmp\files\REFblabxx00001xxxblabla.xml
C:\tmp\files\REFblabxx00002xxxblabla.xml
C:\tmp\files\REFblabxx00003xxxblabla.xml
C:\tmp\files\REFblabxx00004xxxblabla.xml
C:\tmp\files\REFblabxx00005xxxblabla.xml
C:\tmp\files\REFFFFFFFFFFFF.xml
7 db
A GetFiles szűrője alapján
C:\tmp\files\REFblabxx00001xxxblabla.xml
C:\tmp\files\REFblabxx00002xxxblabla.xml
C:\tmp\files\REFblabxx00003xxxblabla.xml
C:\tmp\files\REFblabxx00004xxxblabla.xml
C:\tmp\files\REFblabxx00005xxxblabla.xml
C:\tmp\files\REFFFFFFFFFFFF.xml
6 db
Regex-el tovább szűrve
C:\tmp\files\REFblabxx00001xxxblabla.xml
C:\tmp\files\REFblabxx00002xxxblabla.xml
C:\tmp\files\REFblabxx00003xxxblabla.xml
C:\tmp\files\REFblabxx00004xxxblabla.xml
C:\tmp\files\REFblabxx00005xxxblabla.xml
5 dbInnentől kezdve tényleg tudni kellene, hogy mit is akarunk szűrni, mert ugye a REFFFFFFFFFFFF.xml nem mindegy, hogy benne van e, vagy nincs, vagy a számok és a REF között kell e lennie még további karakternek, ha igen, milyennek, hány darabnak, stb. De szerintem innen már boldogulsz vele.
Imi.
[ Szerkesztve ]
-
moseras
tag
válasz kkdesign #8751 üzenetére
Hello,
Nem teljesen tiszta, hogy mit is akarsz pontosan, valami ilyenre gondoltál ?
static int convert(List<int> l1)
{
int ret = 0;
foreach (var e in l1)
{
ret *= 10;
ret += e;
}
return ret;
}
static void Main(string[] args)
{
var szamok = new List<int>() { 0,0,1,5,7,3,0,0,1,2,3,0,0,5,8,7,4,5,0,1,2,5,8,9 };
// Az eredeti számsorozat
Console.WriteLine($"Az eredeti számsorozat: { string.Join("", szamok) }");
// A nem 0 értékű számjegyek száma
var c1 = szamok.Count(x => x != 0);
Console.WriteLine($"A nem 0 értékű számjegyek száma: { c1 }");
var temp = new List<int>();
var leghosszabb_szamok = new List<int>();
int maxx = 0;
foreach (var item in szamok)
{
if (item != 0)
{
temp.Add(item);
}
else
{
if (temp.Count > 0 && temp.Count >= maxx)
{
leghosszabb_szamok = leghosszabb_szamok.Where(n => Math.Floor(Math.Log10(n) + 1) >= maxx).ToList();
leghosszabb_szamok.Add(convert(temp));
maxx = temp.Count();
}
temp.Clear();
}
}
if (temp.Count > 0 && temp.Count >= maxx)
{
leghosszabb_szamok = leghosszabb_szamok.Where(n => Math.Floor(Math.Log10(n) + 1) >= maxx).ToList();
leghosszabb_szamok.Add(convert(temp));
}
// A leghosszabb számjegyű szám(ok)
Console.WriteLine($"A leghosszabb számjegyű szám(ok): { string.Join(", ", leghosszabb_szamok) }");
// A leghosszabb számjegyű szám(ok) jegyeinek száma
Console.WriteLine($"A leghosszabb számjegyű szám(ok) jegyeinek száma: { maxx }");
}Eredmény:
Az eredeti számsorozat: 001573001230058745012589
A nem 0 értékű számjegyek száma: 17
A leghosszabb számjegyű szám(ok): 58745, 12589
A leghosszabb számjegyű szám(ok) jegyeinek száma: 5Ha jól értem, akkor neked kellene
- az eredeti sorozat nem 0 elemeinek száma
- a leghosszab jegyű szám(ok) külön listába gyűjtve
- a leghosszab jegyű szám(ok) jegyeinek számaImi.
[ Szerkesztve ]
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- LEGO klub
- Dell notebook topic
- Crypto Trade
- Építő/felújító topik
- eBay-es kütyük kis pénzért
- Vicces képek
- Samsung Galaxy S23 Ultra - non plus ultra
- Debrecen és környéke adok-veszek-beszélgetek
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
- EDIFIER R1700BTS hangfal pár makulátlan, új állapotban, 2 év hivatalos garanciával, alkalmi áron
- LG OLED55B23LA 2 Év GYÁRI GARANCIA
- Apple iPhone XR 128GB, Kártyafüggetlen, 1 Év Garanciával
- Gamer PC , i7 12700KF , RTX 3080 Ti , 64GB DDR5 , 960GB NVME , 1TB HDD
- Intel PC , i5 8500 , 1660 6GB , 32GB DDR4 , 512GB NVME , 500GB HDD
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest