Veľkonočná akcia je tu a s ňou aj extra kredity ZADARMO na náš interaktívny e-learning. Dobij si teraz kredity a posuň sa vo svojej kariére vpred!
Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

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

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Odpovedá 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)

Odpovedať
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
Odpovedá 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

Odpovedať
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
Odpovedá 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...

Odpovedať
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
Odpovedá 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.

 
Odpovedať
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?

 
Odpovedať
21.2.2017 20:09
Avatar
Odpovedá 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í...

Odpovedať
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

Odpovedať
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 ...

Editované 29.10.2017 10:40
Odpovedať
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 ...

Odpovedať
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
Odpovedá na slezak-petr
Ondřej Štorc:29.10.2017 12:09

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

Odpovedať
29.10.2017 12:09
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 64.