NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze – Fakturační systém v C# .NET - LocalDB a Entity Framework

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na slezak-petr
Michal Štěpánek:16.1.2017 11:33

Kdysi jsem taky dělal appku s databází MS Access a na cílovém PC vůbec nebyl Access nainstalovaný. Jen jsem si přidal reference na knihovny (aktuálně nabízí VS tuto - Microsoft Access 14.0 Object library) a MDB soubor jsem přiložil k appce (samozřejmě do ProgramData, protože v ProgramFiles by se musely ošetřovat práva k zápisu)

Odpovědět
16.1.2017 11:33
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
slezak-petr
Člen
Avatar
Odpovídá na Michal Štěpánek
slezak-petr:16.1.2017 12:09

OK ano, rozumím, místo dtb.MDF byla dtb.MDB a zbytek byl v C#
Tady to celé vzniklo tak, že zákazník chtěl "aplikaci rozumět, kontrolovat a spravovat"
a trochu se vyznal ve VBA (Office - Visual basic for Application)
Moje chyba, neměl jsem to dopustit.
Každopádně díky za info

Odpovědět
16.1.2017 12:09
Čím víc se učím, tím víc mi přijde, že toho ještě mnoho neumím
Avatar
Odpovídá na slezak-petr
Michal Štěpánek:18.1.2017 13:56

Tady to celé vzniklo tak, že zákazník chtěl "aplikaci rozumět, kontrolovat a spravovat"

Rozumět, kontrolovat a spravovat ano, ale podle mě by neměl mít přístup do databáze mimo aplikaci, protože tam může napáchat nedozírné a nevratné škody...

Odpovědět
18.1.2017 13:56
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Petr Domes (petrds)
Karel Fojtík:21.2.2017 19:58

Děkuji problém vyřešen - DB se aktualizovala ve složce Debug/Release - takže špatná DB.

 
Odpovědět
21.2.2017 19:58
Avatar
Karel Fojtík:21.2.2017 20:09

Chtěl bych se zeptat - mám program velmi podobný programu vytvořenému tady - Přes Publish jsem vytvořil ClickOnce instalační soubor. Na jiném PC kde je nainstalované VS a LocalDB je přístup k databázi bezproblémový. Na dalším PC, kde je jenom LocalDB nemůžu k databázi přistupovat a výjimka vyhazuje chybu "The underlying provider failed on Open"...Neřešil někdo tento problém - nevíte jakou komponentu na klientském PC doinstalovat?

 
Odpovědět
21.2.2017 20:09
Avatar
Odpovídá na Karel Fojtík
Michal Štěpánek:22.2.2017 7:22

Zkus zkontrolovat architekturu cílového počítače (32/64bit) a koukni se, jestli máš správně nastaven výstup z VS. Já používám x86, protože při nastavení "AnyCPU" mi to na některých strojích blblo...
Pak se ještě mrkni, zda v prográmku nepoužíváš nějakou knihovnu, kterou jsi nezakomponoval do výstupu a která případně na tom PC není...

Odpovědět
22.2.2017 7:22
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
slezak-petr
Člen
Avatar
slezak-petr:23.8.2017 14:50

Ahoj, co když potřebuji udělat View na spojení dvou / více tabulek?
A/ Udělám view v databázi a přegeneruji Entity Framework
nebo
B/ Se dělá View jako třída v C# a jak?

Mám například Tabulky/třídy Cars a Customers, které chci spojit podle Customer_ID

Odpovědět
23.8.2017 14:50
Čím víc se učím, tím víc mi přijde, že toho ještě mnoho neumím
Avatar
slezak-petr
Člen
Avatar
slezak-petr:29.10.2017 10:38

Ahoj potřeboval bych poradit s Exception, nějak nevidím chybu, zdroj chyby je tady, to je OK:

1/

try {
    db.Activities.Add(ac);
    db.SaveChanges();
}
catch (DbEntityValidationException e)
{
    if (true)
    {
        // 1.A True
        MyDbEntityValidationException ex = new MyDbEntityValidationException(e);
        Console.WriteLine(Environment.NewLine + "Err.:" + Environment.NewLine + ex.Message);
        }
    else
    {
        // 1.B False
        Console.WriteLine(Environment.NewLine + "Err.:" + Environment.NewLine + e.Message);
    }
}

Pak je třída DbEntityValida­tionException, která parsuje Exception, a vrací hezčí výsledek,
pokud ji použiji v kódu nahoře viz 1.A tak to funguje jak má

Pak je ale použití v přepsání SaveChanges(), kde očekávám, že to vybublá do kódu 1/ viz nahoře
ale ono se mi to kousne na throw newException; viz toto:

// https://stackoverflow.com/questions/7795300/validation-failed-for-one-or-more-entities-see-entityvalidationerrors-propert
// spolu s: MyDbEntityValidationException

public partial class DbUctoEntities : DbContext
{

    // obyčejná Exception vrací:
    // << Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. >>

    public override int SaveChanges()
    {
        try
        {
            return base.SaveChanges();
        }
        catch (DbEntityValidationException e)
        {
            // MyDbEntityValidationException parsuje Exception a vrací:
            // << Entita "Ucto.Activity" událost "Added" nastala(y) následující chyba(y) (validace):
            // Vlastnost: "Activity_abbreviation", Hodnota: "", Chyba: "Pole Activity_abbreviation je povinné." >>
            var newException = new MyDbEntityValidationException(e);
            throw newException; // <<<<<<<<<<<<<<<<<<<
        }

    }

}

Nevím proč, když mám zakomentovanou (REM) SaveChanges() tak je to OK
... nevím ...

Editováno 29.10.2017 10:40
Odpovědět
29.10.2017 10:38
Čím víc se učím, tím víc mi přijde, že toho ještě mnoho neumím
Avatar
slezak-petr
Člen
Avatar
slezak-petr:29.10.2017 10:46

Ahoj potřeboval bych poradit s Exception, nějak nevidím chybu, zdroj chyby je tady, to je OK:

1/

try {
    db.Activities.Add(ac);
    db.SaveChanges();
}
catch (DbEntityValidationException e)
{
    if (true)
    {
        // 1.A True
        MyDbEntityValidationException ex = new MyDbEntityValidationException(e);
        Console.WriteLine(Environment.NewLine + "Err.:" + Environment.NewLine + ex.Message);
    // << Entita "Ucto.Activity" událost "Added" nastala(y) následující chyba(y) (validace):
    // Vlastnost: "Activity_abbreviation", Hodnota: "", Chyba: "Pole Activity_abbreviation je povinné." >>
        }
    else
    {
        // 1.B False
        Console.WriteLine(Environment.NewLine + "Err.:" + Environment.NewLine + e.Message);
    // << Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. >>
    }
}

Pak je třída DbEntityValida­tionException, která parsuje Exception, a vrací hezčí výsledek,
pokud ji použiji v kódu nahoře viz 1.A tak to funguje jak má

Pak je ale použití v přepsání SaveChanges(), kde očekávám, že to vybublá do kódu 1/ viz nahoře
ale ono se mi to kousne na throw newException; viz toto:

// https://stackoverflow.com/questions/7795300/validation-failed-for-one-or-more-entities-see-entityvalidationerrors-propert
// spolu s: MyDbEntityValidationException

public partial class DbUctoEntities : DbContext
{

    // obyčejná Exception vrací:
    // << Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. >>

    public override int SaveChanges()
    {
        try
        {
            return base.SaveChanges();
        }
        catch (DbEntityValidationException e)
        {
            // MyDbEntityValidationException parsuje Exception a vrací:
            // << Entita "Ucto.Activity" událost "Added" nastala(y) následující chyba(y) (validace):
            // Vlastnost: "Activity_abbreviation", Hodnota: "", Chyba: "Pole Activity_abbreviation je povinné." >>
            var newException = new MyDbEntityValidationException(e);
            throw newException; // <<<<<<<<<<<<<<<<<<<
        }

    }

}

Nevím proč, když mám zakomentovanou (REM) SaveChanges() tak je to OK
... nevím ...

Odpovědět
29.10.2017 10:46
Čím víc se učím, tím víc mi přijde, že toho ještě mnoho neumím
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na slezak-petr
Ondřej Štorc:29.10.2017 12:09

Koukni se na tohle nastavení: Debug->Exceptions->Check Thrown/User-Unhandled

Odpovědět
29.10.2017 12:09
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 64.