Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WCF + Repositories + Proxymethoden automatisch erzeugen
Campy
myCSharp.de - Member



Dabei seit:
Beiträge: 427

Themenstarter:

WCF + Repositories + Proxymethoden automatisch erzeugen

beantworten | zitieren | melden

Hallo zusammen,

ich habe einige Repositories und einen WCF Service.
Bei mir sieht das momentan wie im Bild (Anhang) aus. Nun denke ich mir aber, dass das auch einfacher gehen muss. Kann ich nicht einfach alle Public Methoden eines Repositories bereitstellen?

Evtl. gibt es auch noch andere Möglichkeiten?
Vielen Dank!
Attachments
A programmer is just a tool, which converts coffeine into code!
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16204

beantworten | zitieren | melden

Hi,

Du kannst einen T-basiertes Base-Repository machen, und dieses dann ebenfalls T-basiert über den WCF schicken ( wenn ich mich richtig erinner ).

Sieht in so aus:


public interface IRepository<T> where T : class
{
	void Add( T entity );
	void Delete( T entity );
}
 
public abstract class RepositoryBase<T> where T : class
{
	private readonly MyDbContext m_dataContext;

	protected RepositoryBase( MyDbContext dbContext )
	{
		m_dataContext = dbContext;
		m_dbset = DataContext.Set<T>( );
	}
	public virtual void Add( T entity )
	{
		m_dbset.Add( entity );
	}
	public virtual void Delete( T entity )
	{
		m_dbset.Remove( entity );
	}
}

Und dann Dein jeweiliges Repository abteilen und mit spezifischen Methoden erweitern.

public class UserRepository : RepositoryBase<User>, IUserRepository
{
	public UserRepository( MyDbContext dbContext )
		: base( dbContext )
	{
	}
}

public interface IUserRepository : IRepository<User>
{
}

damit sparst Du Dir bei den Reps ne Menge Tipparbeit und kannst ggfl. gewisse Funktionen / Operationen anhand des Typs auch im WCF zusammenfassen.

Gruß
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Campy
myCSharp.de - Member



Dabei seit:
Beiträge: 427

Themenstarter:

beantworten | zitieren | melden

Hallo abt,

ich bin gerade wieder auf diesen Thread aufmerksam geworden.
Die Grundidee finde ich hammer gut, nur brauche ich noch eine Schicht, die meine EF Objekte in Domain Objekte umwandelt und umgekehrt.. wo zieh ich die am besten ein?

Danke und viele Grüße
Matthias
A programmer is just a tool, which converts coffeine into code!
private Nachricht | Beiträge des Benutzers
Ahrimaan
myCSharp.de - Member



Dabei seit:
Beiträge: 363
Herkunft: Thorn

beantworten | zitieren | melden

Hi,

das würde ich persl in der Businesschicht machen.
Du kannst für das Mappen zB den Automapper für das mappen der Objekte nutzen
private Nachricht | Beiträge des Benutzers
Campy
myCSharp.de - Member



Dabei seit:
Beiträge: 427

Themenstarter:

beantworten | zitieren | melden

Hallo,

hab das gerade so umgesetzt. Mit Automapper bin ich bereits vertraut ;)
Hab in der RepositoryBase - Klasse noch die EF Objekte drin und im IRepository dann die Domain-Objekte. Sprich in den Repositories wird gemappt und dann die base-Methode aufgerufen :)
A programmer is just a tool, which converts coffeine into code!
private Nachricht | Beiträge des Benutzers
Rainbird
myCSharp.de - Experte

Avatar #avatar-2834.jpg


Dabei seit:
Beiträge: 3953
Herkunft: Mauer

Wcf?

beantworten | zitieren | melden

Hallo Campy,

muss es denn zwingend WCF sein?
Muss die Kommunikation bestimmten Standards (z.B. SOAP) genügen?
Must Du Silverlight Clients bedienen können?

Falls nicht, gibt es Alternativen zu WCF, die können, was Du willst.

WCF folgt dem Dogma der Serviceorientierung. Dies beinhaltet auch die Regel, dass Dienste explizite Schnittstellen haben müssen. Das hat zwar in heterogenen System absolut seine Berechtigung, ist aber in reinen .NET-Anwendungen absolut unnötig.

Wie es aussieht stört Dich diese Regel (wie mich übrigens auch). Du versuchst das irgendwie "aufzuweichen". Falls WCF als Kommunikationsframework für Dein Projekt nicht in Stein gehauen feststeht, könnte ich Dir Alternativen vorstellen.

Gruß
Rainbird
private Nachricht | Beiträge des Benutzers