| 

.NET C# Java Javascript Exception

4
Hallo,

gleich vorneweg: Bin Einsteiger sowohl in WPF als auch in Entity Framework.

Bin an einer WPF-Anwendung mit welcher Daten in einer SQLite-Datenbank gepflegt werden.
Habe mich bisher informiert und etwas rumgespielt, bin aber noch unschlüssig wie ich auf die Datenbank zugreifen soll.

Hat mir einer Tipps evtl. aus eigener Erfahrung?


Hier noch ein paar weitere Infos:

  • Datenbankstruktur ist schon vorhanden
  • ...wird sich aber noch öfters ändern
  • Bisher ca. 15 Tabellen, werden noch ein paar dazu kommen
  • Struktur nicht sehr komplex
  • Anzahl Datensätze je Tabelle ebenfalls überschaubar
  • ...in 3-4 Tabellen werden evtl. ein paar tausend Einträge sein.
  • Performance/Speicherbedarf bei Datenpflege in WPF-Applikation unkritisch
  • ...da die DB unter Windows CE / C++ verwendet wird.


Hab erst mal mit "normalen" Datenbankabfragen rumgespielt. Einfach die Daten in ein DataSet mit "SELECT * ..." einlesen, Daten im DataGrid und ein paar Controls anzeigen und über DataAdapter.Update zurückspielen. Ist allerdings teilweise etwas mühselig, speziell wenn man sich mit Databinding nicht gut auskennt...

Erste Gehversuche mit Entity-Framework hab ich auch schon gemacht. Jedoch werden da im Datenmodell viele Werte die in der Datenbank eigentlich als INTEGER deklariert sind als Int64 gemappt, hauptsächlich bei Primary-Keys. Auch ist mir nicht ganz klar wie dann der Arbeitsablauf sein muss wenn sich die Datenbankstruktur öfters mal ändert.

Kurz rumgespielt habe ich mit Dapper und PetaPoco. Da hat mir aber nicht gefallen, dass fehlende Felder einfach ignoriert werden und das Zurückschreiben der Daten in die DB. Habe mich aber evtl. auch nicht intensiv genug damit beschäftigt.
18.07.2013
erh 86 1 3
2 Antworten
0
Das sollte mit EF ohne Probleme funktionieren. Ich setze in einer Anwendung auch Telerik OpenAccess ein, das ist mit SQLite etwas gnädiger (gerade bei komplexen Views mit mehrfachen Joins und Aliases), als das EF.
Das Mapping kannst Du in jedem Fall selbst beeinflussen, egal ob Du DB-First, Code-First oder Model-First Ansatz wählst.
Bzgl. Änderungen in der DB Struktur werden Dir EF Migrations zur Seite stehen.
18.07.2013
ffordermaier 8,4k 3 9
Danke für die Info!

bei mir ist DB-First, die Struktur wird sich aber noch öfters ändern.

Die DB wird normalerweise unter WinCE/C++ verwendet, die WPF-Anwendung ist nur als komfortable Datenpflege auf dem PC für "Nicht-Entwickler" gedacht.

Updates müssen unter WinCE/C++ möglich sein, dafür sind bisher SQL-Skripte vorgesehen.
Wenn ich das richtig gelesen habe passen die EF Migrations dann aber nicht so richtig?

Ich werde mal noch mit EF intensiver rumspielen, wie das bei DB-Änderungen läuft muss ich einfach mal ausprobieren.
erh 19.07.2013
0
Hab jetzt eine Weile mit EF rumgespielt und steig nicht richtig durch!

Zum Testen habe ich ein simples Beispiel gemacht. Insgesamt 3 Tabellen (Language, Article, ArticleDescription) für Artikel mit Beschreibung in mehreren Sprachen (das SQL-Skript zum Erzeugen der DB ist ganz unten).

Aus der bestehenden Datenbank erzeuge ich ein Modell:


Aber wie geht es danach weiter?

Bisher habe ich dann Datenquellen für alle meine Klassen aus dem erstellten Model erzeugt (unter "Data Sources" -> "Add New Datasource..."). Diese kann ich dann per Drag/Drop auf mein Window ziehen.

Ich möchte nun die Artikel in einem Grid anzeigen. Die Beschreibung soll in einer Textbox darunter angezeigt werden, die Sprache der Beschreibung soll über eine Combobox ausgewählt werden.



Ich bekomme nun zu einem Artikel die Beschreibungen in den einzelnen Sprachen.
In der Combobox sollten aber alle Sprachen im Klartext aufgelistet werden, bei Auswahl einer Sprache für die keine Beschreibung vorhanden ist soll ein neuer Eintrag angelegt werden.
Dazu muss ich wahrscheinlich als ItemSource die Liste der Sprachen setzen:
ItemsSource="{Binding Source={StaticResource languageViewSource}, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="NativeName"

Aber wie bekomme ich jetzt die Verbindung der ComboBox zu den sprachabhängigen Beschreibungstexten der Artikel?

Über Tipps/Tricks wäre ich dankbar, probiere schon tagelang mit EF rum und bin langsam etwas genervt...

Danke & Gruß

Hier noch die SQL-Statements zum Erzeugen der DB:


CREATE TABLE "Language" (
"LanguageId" CHAR(2) NOT NUll,
"EnglishName" NVARCHAR(30) NOT NULL,
"NativeName" NVARCHAR(30) NOT NULL,
CONSTRAINT "PK_Language" PRIMARY KEY("LanguageId")
);

CREATE TABLE "Article" (
"ArticleId" INTEGER NOT NULL,
"Field1" NVARCHAR(30),
"Field2" NVARCHAR(30),
CONSTRAINT "PK_Article" PRIMARY KEY("ArticleId")
);

CREATE TABLE "ArticleDescription" (
"ArticleId" INTEGER NOT NULL,
"LanguageId" CHAR(2) NOT NULL,
"Description" NVARCHAR(50) NOT NULL,
CONSTRAINT "PK_ArticleDescription" PRIMARY KEY("ArticleId", "LanguageId"),
CONSTRAINT "FK_ArticleDescription_Article" FOREIGN KEY("ArticleId") REFERENCES "Article"("ArticleId") ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT "FK_ArticleDescription_Language" FOREIGN KEY("LanguageId") REFERENCES "Language"("LanguageId") ON DELETE CASCADE ON UPDATE CASCADE
);

INSERT INTO "Language"("LanguageId", "EnglishName", "NativeName") VALUES('en', 'English', 'English');
INSERT INTO "Language"("LanguageId", "EnglishName", "NativeName") VALUES('de', 'German', 'Deutsch');
INSERT INTO "Language"("LanguageId", "EnglishName", "NativeName") VALUES('fr', 'French', 'Français');

INSERT INTO "Article"("ArticleId") VALUES(0);
INSERT INTO "Article"("ArticleId") VALUES(1);

INSERT INTO "ArticleDescription"("ArticleId", "LanguageId","Description") VALUES(0, 'en', 'apple');
INSERT INTO "ArticleDescription"("ArticleId", "LanguageId","Description") VALUES(0, 'de', 'Apfel');
INSERT INTO "ArticleDescription"("ArticleId", "LanguageId","Description") VALUES(1, 'en', 'cherry');
INSERT INTO "ArticleDescription"("ArticleId", "LanguageId","Description") VALUES(1, 'de', 'Kirsche');
22.07.2013
haide 41 2

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH