Laden...

[erledigt] Entity Framework: EntityObject in allgemeiner Methode ändern

Erstellt von m.grauber vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.627 Views
M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 13 Jahren
[erledigt] Entity Framework: EntityObject in allgemeiner Methode ändern

verwendetes Datenbanksystem: <SQL-Server 2000-2008 (Standard/Express)>

Hallo,

ich habe eine wirklich dumme Anfängerfrage X( - Bitte nicht schlagen!:

In mehreren unabhängigen Methoden möchte ich jeweils ein EntityObject als Parameter übergeben.

In den Methoden möchte ich die EntityObjects ändern und speichern.

Nur in der Methode kann ich nicht auf bestimmte Felder zugreifen. Wie kann ich .NET begreiflich machen, dass es diese Felder auch tatsächlich gibt? (Ich übergebe immer Entitäten, wobei diese Felder bei vielen, aber nicht allen Entitäten existieren können):

Bsp.:

Es existiert ein EntityObject "Kunde" mit einem Feld "Feld1" und weitere EntityObjecte (z.B. "Artikel", "Lieferanten" etc.) mit dem gleichen Feld "Feld1".

In der Methode soll immer "Feld1" geändert werden.


public static void AendereFeld(EntityObject o)
{
  o.Feld1 = "Test";  // Soll z. B. Kunde.Feld1 ändern
}

Leider kommt eine Fehlermeldung: EntityObject enthält keine Definition für "Feld1" und es konnte keine Erweiterungsmethode gefunden werden.

Wie umgeht man das?

Danke

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]

849 Beiträge seit 2006
vor 13 Jahren

Das wirst Du nur mit Reflection lösen können. Schau Dir mal die klasse PropertyInfo oder das schlüsselwort dynamic (neu in .Net4 & VS2010) an.

Reflection hat natürlich Performance technische nachteile. Das wirst du nicht bei 10 Aufrufen merken, aber bei 100000.

F
10.010 Beiträge seit 2004
vor 13 Jahren

@m.grauber:
Wenn Du doch weist das es eine "Kunde" ist, warum übergibst du dann EntityObject?

M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 13 Jahren

Hallo FZelle,

weil ich das gleiche Feld auch in vielen anderen "Tabellen" (Entitäten) habe.

Z. B. Könnte es ein "CreationDate" sein.

Wie kann ich dann ein Kundenobjekt, Artikelobjekt, etc. übergeben und das gleichnamige Feld (z. B. CreationDate) kann in allen Objekten geändert werden. Über die als Parameter übergebene Entität kann ich ja direkt darauf zugreifen.

Ich übergebe ja auch nur Objekte, die dieses Feld besitzen - nur .NET traut mir leider so viel Intelligenz nicht zu. 🙁

Gruß

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]

W
955 Beiträge seit 2010
vor 13 Jahren

Na dann definiere doch ein Interface und lass es den bestimmten Entitaeten implementieren.

M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 13 Jahren

Hallo unconnected,

danke für den Tipp! Das klappt tatsächlich! 👍

Ich hatte gedacht, dass es einen leichteren Weg dafür gibt, aber die Laufzeit ist mir für 1 Änderung nicht so wichtig.

Grüße!

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]

M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 13 Jahren

Hallo witte,

stimmt! 👍 Das ist auch noch ein Weg (den vielleicht auch Microsoft so denken würde) Dann wäre die Methode am jeweiligen Objekt dran.

Vielen Dank für Eure hilfreiche Tipps!

Grüße

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]

691 Beiträge seit 2007
vor 13 Jahren

Ich übergebe ja auch nur Objekte, die dieses Feld besitzen - nur .NET traut mir leider so viel Intelligenz nicht zu. 😦Gruß

Dafür gibt es z.b. Interfaces.

mit freundlichen Grüßen,
Tomot

Projekte: www.gesellschaftsspieler-gesucht.de