Laden...

Eventhandling mit Entity Framework und Firebird

Erstellt von CSharperUser vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.703 Views
C
CSharperUser Themenstarter:in
80 Beiträge seit 2010
vor 13 Jahren
Eventhandling mit Entity Framework und Firebird

verwendetes Datenbanksystem: Firebird

Hallo zusammen,

ich rätsel schon eine Weile, wie man Events der Firebird Datenbank mittels Entity Framework registrieren kann.

Ich weiß aus der Firebird-Dokumentation, dass es ein FbRemoteEvent gibt, aber das benötigt ein Connection-Objekt. Ich arbeite aber mit dem EF und nicht direkt mit Connection-, Reader-, etc. Objekten.

Gibt es eine Möglichkeit Events von Firebird mit dem EF zu registrieren?

Beispiel:
Ich habe eine Tabelle Person. Diese Tabelle wird mit dem EF gemappt. Werden nun von außen die Daten der Tabelle Person geändert, wird ein Event von der DB ausgelöst. Auf das Event möchte ich mich in der Klasse Person dranhängen. Ich weiß nur nicht wie ich mich da draufhängen kann.

Weiß einer von euch Rat?

F
10.010 Beiträge seit 2004
vor 13 Jahren

EF ist dazu da unabhängig von der DB die Daten in Objekte zu mappen ( ORM halt ) und zurück.
Wenn Du etwas anderes machen willst, musst Du selber mit den jeweiligen Klassen ( hast du ja genannt, welche ) arbeiten.

C
CSharperUser Themenstarter:in
80 Beiträge seit 2010
vor 13 Jahren

Vielleicht habe ich mich ein wenig unverständlich ausgedrückt.

Das EF hat bereits eine Verbindung zur Datenbank.
Um nun Events von Firebird registrieren zu können, muss zunächst ein Firebird-Connection-Objekt erstellt werden. Dann muss die Verbindung geöffnet werden. Dieses Objekt übergibt man dann einem EventHandler (hier: FbRemoteEvent).

Würde ich das nun auch so machen, hätte ich ja zwei offene Verbindungen zur Datenbank (Die Verbindung des FbConnection-Objekts und die des EF).

Ich habe auch bereits mit den partiellen Methoden OnValueChanged, etc. versucht, auf Änderungen zu reagieren, aber dies funktioniert nicht.

Hatte vielleicht einer von euch bereits dieses Problem oder eventuell einen Workaround?

Leider ist in diesem Projekt Firebird als Datenbank Pflicht.

1.457 Beiträge seit 2004
vor 13 Jahren

Hallo CSharperUser,

Was genau meinst du mit "von außen die Daten der Tabelle" geändert? Greift eine andere Anwendung auch auf diese Datenbank zu und ändert Daten?

Ich hoffe das du nur deine eigene Anwendung meinst und mit "von außen" andere Clients, die auf diese Datenbank zugreifen.

Wie FZelle schon geschrieben hat, sind OR Mapper dafür da einen gemeinsamen Nenner zwischen den Datenbanken zu schaffen und diesen zu abstrahiert in Objekte zu mappen. Nicht jede Datenbank hat die von dir beschriebene Eigentschaft. In diesem Fall musst, du wirklich dich an eine Entity Framework Connection dranhängen oder eine neue erzeugen.

Was genau möchtest du mit diesem Event anstellen? Was möchtest du mit dieser Information verarbeiten?

C
CSharperUser Themenstarter:in
80 Beiträge seit 2010
vor 13 Jahren

In der Datenbank wird ein Stored Procedure ausgeführt, sobald sich die Daten in der Datenbank ändern.

Der Kontext ist einfach nur der, dass ich informiert werden möchte, wenn sich Daten in der Datenbank ändern. Ich möchte ja nicht alle 5 Sekunden prüfen, ob es neue Daten oder modifizierte Daten gibt. Die Benachrichtigung soll durch Events geschehen.

Über die Firebird .NET API ist es möglich, sich auf bestimmte "Events" dranzuhängen.

Mit "von außen" meine ich andere Clients, die die Datenbank nutzen. Beispielsweise ändert ein Client den Vornamen einer Person und dies möchte ich per Event mitbekommen.