Speicherung von Änderungen nicht möglich

Gewinde

Benutzer
Beiträge
17
Guten Morgen,

ich habe wiedermal ein Problem. Wenn es nicht die WPF ist, dann ist es halt eben SQL 🤯 . Ich möchte in meiner WPF ein Accountsystem integrieren. Das Programm startet mit einem Login Bildschirm, in welches man Username und Password eingeben kann. Das Prinzip sollte eben aufgebaut werden, wie man es von anderen Accountverwaltungen kennt.

Jetzt wollte ich meine Tables erstellen und diese dann in NormalForm bringen. Dazu erstelle ich einen Table für Username, einen für Passwörter (professionelle encryption lasse ich außen vor) und danach einen für Profiles. Alle Tables sind mit ID Spalten ausgestattet, welche den jeweiligen Primary Key des jeweiligen Tables bilden. Im Table Profiles soll die Profile_ID den Primary Key und die Spalte Username_ID und Password_ID jeweils einen Foreign Key bilden. Nach meinem Verständniss sollte damit gewährleistet sein, dass nur alle drei Spalten zu 100% das passende Profile bilden. Später sollen dann weitere Tables folgen.

So, jetzt zu meinem Problem. Das erstellen der einzelnen Tables passt, ich kann auch in jedem Table einen Primary Key vergeben. Wenn ich jetzt über den Tabledesigner im Profiles Table zu einem späteren Zeitpunkt die Foreign Keys sowie die Constraints setzen möchte, wird dieses auch zugelassen. Allerdings wird mir beim Speichern im nachhinein gesagt, dass ein Speichern der Änderungen nicht möglich ist, da die Tables für Änderungen nur gelöscht und neu erstellt werden dürfen. Die vorgenommenen Änderungen dürfen nicht gespeichert werden, damit werden alle Änderungen rückgängig gemacht.

Wenn ich (um dieses Problem zu umgehen) die Keys direkt bei der Erstellung setze, wird der Code auch zu 100% aktzeptiert. Nachdem ich mir dann allerdings die einzelnen Tables nochmal ansehe, sind bis auf die Primary Keys keine weiteren Keys gesetzt.

Gleiches gilt komischwerweise auch für Änderungen bei Allow Nulls ja/nein oder zur Aufforderung zum iterieren der ID Spalten. Ein Seed setzen ist ebenfalls nicht möglich.

Kann mir eventuell jemand weiterhelfen?

Mit freundlichem Gruß Gewinde
 
Werbung:
Morgen, wenn Du das ganze mit T-SQL erstellst anstelle des Table Designers was passiert dann? Wenn was nicht geht gibts ne Fehlermeldung, immer.
 
Hey, danke für die schnelle Antwort, es wird mir bei dem Versuch eine Änderung im Designer zu speichern folgender Text angezeigt.
fehker.png

Ich wollte es auf Grund des Problems jetzt mal mit CodeFirst in meiner WPF versuchen, scheitere allerdings bei dem Versuch die Datenbank aufzubauen. Leider reicht mein Wissen im EntityFrameWork noch nicht aus um den Versuch durchzuführen. Meine Kurse stützen sich nicht auf Core 7, sondern auf 4. irgendwas. Welches ja mittlerweile etwas überholt ist. Bei diesen Problemen wird einem immer verdeutlicht, das ich trotz meines Wissens noch ziemlich am Anfang von allem stehe. :)
 
ich kann das nicht nachvollziehen. Soweit ich das verstehe, hast Du eine bunte Klicki-Oberfläche, die aber nicht funktioniert. Dann kann man immer noch SQL verwenden...

Code:
postgres=# create table gewinde1(id int, data text);
CREATE TABLE
postgres=# create table gewinde2(gewinde1_id int, data text);
CREATE TABLE
postgres=# alter table gewinde1 add constraint c1 primary key (id);
ALTER TABLE
postgres=# alter table gewinde2 add constraint c2 foreign key (gewinde1_id) references gewinde1(id);
ALTER TABLE
postgres=#
 
Hey,
also ich habe es mal über CodeFirst versucht, allerdings nicht mit Core, sondern mit Framework. Es funktioniert dort auf jeden Fall, zur not geht es auch in dieser Variante. Zufrieden bin ich mit der Situation allerdings nicht, da ich auch gerne übung mit der MSSM oberfläche haben möchte. Zu wissen wie man DatabaseFirst hinbekommt wäre meiner Auffassung nach nicht verkehrt. Ich installiere gerade mal alles neu und es gibt eben nur Probleme. Damit hatte ich euch aber schon vor einiger Zeit genervt. Das Problem ist bekannt und Microsoft bekommt es nicht wirklich gebacken ( oder es ist zu unwichtig für MS). :)
 
es wird mir bei dem Versuch eine Änderung im Designer zu speichern folgender Text angezeigt.
Diese Option, die im Text genannt wird, kannst Du doch prüfen. Hast Du die angeklickt? (Keine Ahnung, ob das Opt In oder Out ist. Und ich hab sowieso keine Ahnung von WPF.

Eine weitere Möglichkeit wäre, dass Du als SQL User nicht das Recht hast, die Tabelle zu droppen.
Das kannst Du direkt unter SQL ausprobieren, einfach irgendeine anlegen und droppen.

Wenn das der Grund ist, musst Du Dir mit irgendeinem Tool oder SQL einen User anlegen, der die notwendigen Rechte hat. Oder diese Rechte dem OS User zuweise, den Du unter Windows benutzt, falls Du nicht mit einem SQL User arbeitest.
Zur vorläufigen Umgehung dieses Problems könntest Du auch einfach Deine Tabelle anders nennen. Auch wenn Du unbedingt Code First machen willst oder eben einfach WPF mit seiner Persistierung nutzen möchtest, schadet es sicher nicht, an einer Console oder einem anderen Tool Deiner Wahl ein wenig SQL Grundlagen einzuüben.
 
Das Problem ist bekannt und Microsoft bekommt es nicht wirklich gebacken ( oder es ist zu unwichtig für MS). :)
Also wie gesagt, einfach mal zu Fuß ne Tabelle anlegen übt auch ungemein und Du bekommst echte Fehlermeldungen, selbst bei MS SQL Server.
Ansonsten kann man sich auch die Frage stellen, warum man sich mit sowas rumschlagen möchte. Aber vielleicht musst Du ja.
 
Werbung:
In der Fehlermeldung steht dein Problem. SSMS lässt das nicht zu, da die Tabelle neu erstellt werden muss (wenn du dies über SSMS machst). Wenn das doch erlaubt sein soll, kannst du die Option deaktivieren.
 
Zurück
Oben