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

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Rioma
Thema: Server die anzahl der zu lesenden Bytes mitteilen
Am im Forum: Grundlagen von C#

Einige dich vorher auf eine byte-Anzahl. Zum Beispiel enthalten die ersten 4bytes immer die Länge des Stream als integer. Der Server liest dann entsprechend die ersten 4 bytes und wandelt diese in einen integer um.

Aber vielleicht hat jemand anderes ja auch noch eine andere Idee.

Thema: Server die anzahl der zu lesenden Bytes mitteilen
Am im Forum: Grundlagen von C#

Du musst quasi ein eigenes "Protokoll" aufsetzen, damit dein Server versteht was der Client möchte. Ein Anfang wäre die Anzahl der Bytes die gesendet werden vorweg zu schreiben und beim Server auszulesen.

Thema: Remote Shutdown im Netzwerk möglich?
Am im Forum: Netzwerktechnologien

In der Theorie sollte das doch über die Kommandozeile per shutdown -m 'Compuername' gehen.
Falls ja, wäre es ein leichtes dies in ein C# Programm zu übernehmen

Thema: DHCP über WMI deaktivieren
Am im Forum: Netzwerktechnologien

Schau mal hier -->Why does applying a static IP address via WMI work just once?

Bei warum und wieso kann ich dir leider nicht weiterhelfen, aber vielleicht kann es ja jemand anderes

Thema: WPF / MVVM: Animation im Fortschrittsfenters läuft nicht
Am im Forum: GUI: WPF und XAML

Zitat von MillionsterNutzer
Ich dachte erst kurz daran die zeitintensive Operation in einen separaten Thread zu packen, allerdings muss der Benutzer tatsächlich darauf warten, es ist also egal ob ich diese direkt im UI-Thread ausführe oder dieser dann auf die Beendigung des separaten Threads wartet.
Ralf

Meiner Meinung nach sollten Zeit intensive Prozesse immer so ausgeführt werden, dass die UI nicht einfriert. Ich als Benutzer wüsste nie, ob das Programm noch läuft oder wie du selbst sagst abgestützt ist.

Falls der Fortschritt es zulässt würde ich ein Progress Property anbieten und eine Progressbar daran binden. Diese kannst du ja bei laufenden Aufgaben einblenden und danach wieder ausblenden. Am besten ebenfalls über ein Property.

Die Events halte ich nicht für die beste Idee.

Eine andere Idee wäre ein Overlay bei einer langen Aufgabe über das Fenster zu legen. Hier ebenfalls die visibility an eine VM Property binden und dann zeigst du eine kleine Animation, z.B. so etwas hier Creating Metro (Windows 8) Loading Animation Using XAML

Nachdem die Aufgabe abgearbeitet ist, lässt du das Overlay wieder verschwinden

Thema: Korrekte MVVM implementierung
Am im Forum: Rund um die Programmierung

Entschuldigung, dann habe ich dich falsch verstanden. Darf ich Fragen wie so eine Implementierung aussehen würde?

Ich habe bisher sehr oft solche Ansätze gesehen:


private BL _bl; //Businesslayer
public ICommand einCommand {get; set;}

public VM(){
   einCommand = new DelegateCommand( __ => GetIrgendwas());
   _bl = new BL(); // Bitte ignoriert die fehlende DI
}

public ObservableCollection<Irgendwas> Test {get; set;}

void GetIrgendwas(){
    Test = _bl.GetTeste();
}

Thema: Korrekte MVVM implementierung
Am im Forum: Rund um die Programmierung

Zitat von Sarc
Stell dir vor, das laden der Vokabeln dauert lange, dann müsstest du innerhalb des ViewModels z.B. eine asynchrone Verarbeitungslogik einbauen, damit die UI nicht einfriert. Das ist nicht Aufgabe des ViewModels.

[....]

Das ViewModel hat ja eine ObservableCollection, d.h. ein Command kümmert sich um das Nachladen der Vokabeln (evtl. sogar asynchron) und fügt diese dann der ObservableCollection hinzu. Dadurch wird das ViewModel automatisch aktualisiert.

Ich hatte eine asynchrone ICommand implementierung, die UI würde also nicht einfrieren. Allerdings sagst du oben, dass eine asynchrone Verarbeitungslogik nicht Aufgabe des ViewModels ist und unten sagst du allerdings das Gegenteil, wenn ich dich richtig verstehe.

Nur wie kommen die Daten in die Collection, wenn das ViewModel den BL nicht kennt?
Der DAL hat bei mir meistens "dumme container" erzeugt und der BL musste noch etwas daran machen und dieser hat die Daten dann an das ViewModel zurück gereicht.

Thema: Korrekte MVVM implementierung
Am im Forum: Rund um die Programmierung

Danke. Darf ich Fragen, wie du dir das vorstellst mit dem Übergeben?

Die Daten vorher holen und dann dem ViewModel beim erzeugen mit in den Konstruktor geben, oder noch anders?

Ich hatte den Businesslayer eigentlich zwischen VM und DAL und hielt es für richtig. Wie würdest du denn vorgehen, wenn der Benutzer Daten nachladen können soll? Button ist an ein Command im VM gebunden.

Thema: Korrekte MVVM implementierung
Am im Forum: Rund um die Programmierung

Danke auch für deine Antwort.

Wenn ich mit einer Datenbank arbeite, schreibe ich eigentlich alle Änderungen über einfache C(R)UD Methoden im Repository weg. Es geht hier tatsächlich nur um eine Datei, die einmal weggeschrieben werden soll.

Keine sorge auch die Beispiele habe ich hier nur schnell ohne IDE runter geschrieben. Aber die Anmerkungen sind natürlich Sinnvoll, sonst guckt sich das noch jemand ab. So weit hatte ich anfangs nicht gedacht.

Eine Frage hätte ich noch an dich. Wie du sagst werden ja eigentlich DL und BL injected.
Das heißt ich müsste meinem ViewModel schon den BL mitgeben. Wenn ich den Bl erzeuge, muss ich dann aber auch schon den DL mitgeben. Macht ihr dies alles an einer stelle?

Thema: Nach dem Return ist die Variable "zurückgesetzt"? [GELÖST]
Am im Forum: Grundlagen von C#

Du solltest dir mal Referenztypen und Wertetypen ansehen (genau genommen ist String ein Referenztyp, der sich aber wie ein Wertetyp verhält). Außerdem nimmst du das Return nicht entgegen und so verschwindet es im Nirvana.

Edit: Sorry zu spät

Thema: Dateien nach Dateiendung filtern und verarbeiten Console
Am im Forum: Grundlagen von C#

Zum Beispiel so:


int i = 0;

foreach(string file in files)
{    
        //Verarbeitung
       Console.WriteLine(i + ": " + file);
       i++;
}

Thema: Dateien nach Dateiendung filtern und verarbeiten Console
Am im Forum: Grundlagen von C#

Ist doch klar


string[] files = Directory.GetFiles(@"C:\Users\" + user + @"\Desktop");

gibt die alle Dateien auf dem Desktop.

Durch


 if(file.ToLower().EndsWith(".pst"))
                    {
                        //Verarbeitung
                        Console.WriteLine(file);

                   }

werden nur die Dateien ausgeben, die du haben möchtest.


files[outlook_profile_number]

hier greifst du aber wieder auf das Array mit allen Dateien zu.

Sinnvoll wäre es vorher schon so zu Filtern, dass in deinem Array nur die Dateien sind, die du tatsächlich brauchst.

Thema: Dateien nach Dateiendung filtern und verarbeiten Console
Am im Forum: Grundlagen von C#

Ich kann dir nicht ganz folgen aber Debugge einfach mal das Programm und guck was in dem Array ist, überprüfe deinen Index usw. Dann solltest du recht schnell auf das Problem stoßen. Pfade am besten per Path.Combine zusammen setzen

Thema: Korrekte MVVM implementierung
Am im Forum: Rund um die Programmierung

Danke für die Antworten! Es gibt im Internet leider so viele unterschiedliche Meinungen zu Entwurfsmustern, dass man nur sehr schwer den Einstieg findet.

Thema: Korrekte MVVM implementierung
Am im Forum: Rund um die Programmierung

Danke nochmal. Das heißt also ungefähr so ein Aufbau:

VM --> BL --> DAL

Dazwischen liegen dann natürlich interfaces bzw. wird mit dem Repository-Pattern gearbeitet um die jeweilige Schicht ohne Probleme austauschen zu können.

Nur mal Ein Beispiel:


public class ViewModel{

private ObservableCollection<Vokabel> _vokabeln;
public ObservableCollection<Vokabel> Vokabeln
{
    get { return _vokabeln; }
    set{
         if (Equals(value, _vokabeln)) return;
            _vokabeln = value;
            OnPropertyChanged();
}

private void GetAllVokabeln(){
  Vokabeln = new ObservableCollection<Vokabel>( businessLayer.GetVokabeln());

}

private void SaveAllVokabeln(){
  businessLayer.Save();

}

}


public class BusinessLayer{

IVokabelRepository rep = new VokabelRepository();

public List<Vokabeln> Vokabeln{get; set;}

public List<Vokabeln> GetVokabeln(){
  //Möglicherweise irgendwelche "Business Aufgaben"

  Vokabeln = rep.GetAll();
  return Vokabeln;
}

public void Save(){
  //Möglicherweise irgendwelche "Business Aufgaben"
  rep.Save(Vokabeln);
}


Ich hoffe du verstehst das Beispiel. Hier muss sich natürlich noch um die Synchronisation gekümmert werden, zwischen der Collection im VM und im BL.

Wenn eine Datenbank dahinter liegt, schreibe ich eigentlich jede Änderung an einem Model weg. In diesem Beispiel soll es sich um irgendeine Datei handeln (csv, xml oder ähnliches), die nur am ende mit einem Aktiven Click über ein SpeicherCommand gespeichert werden soll.

Ist es denn dann wirklich Sinnvoll die Collection zusätzlich im BL zu halten? Oder sieht jemand einen "richtigeren" Ansatz?

Thema: Korrekte MVVM implementierung
Am im Forum: Rund um die Programmierung

Danke für die verständliche Erklärung. Mehrfachzugriff auf die Datenbank ist ein berechtigter Einwand den ich nicht beachtet habe. Es geht aber auch nicht um ein Produktiv-System sondern eher um die richtige Umsetzung um mir nicht in der Zukunft mal ein Bein zu stellen. Eine kleine Frage hätte ich noch:

Stell dir vor du hast eine Observablecollection<Model>. Die Daten kommen aus einer CSV oder XML-Datei (lediglich ein einziges Model). Die Daten sollen bearbeitet werden können und am Ende alle zurück geschrieben werden.

Wie würdest du das zurück schreiben bewerkstelligen? Es geht nicht um den technischen Part sondern eher darum, woher die Daten kommen die geschrieben werden sollen.

Würdest du die Observablecollection<Model> als Parameter durchreichen? Oder auf der Business-Schicht eine List<Model> cachen und mit den Änderungen synchronisieren und diese dann zurück schreiben? Oder ein völlig anderer Weg?

An sich wahrscheinlich eine dämliche Frage aber mir stellen sich irgendwie die Nackenhaare auf wenn ich eine Observablecollection<Model> nach unten durchreiche um die Daten zu schreiben.

Ich hoffe du versteht meinen "komischen" Gedankengang und kannst Licht ins Dunkel bringen.

Thema: Korrekte MVVM implementierung
Am im Forum: Rund um die Programmierung

Danke für deine Antwort.

Was genau meinst du mit "während der Datennutzung"?

Es kann auch sein, dass ich in meinem ViewModel die Eigenschaften des Models falsch "publiziere" und ich deswegen auf Probleme stoße.

Ich habe ein kleines Beispiel schnell zusammen geschrieben (Ohne IDE).


public class Vokabel{

public string Übersetzung {get; set;}
public string Vokabelwort {get; set; }

public Vokabel(string übersetzung, string vokabelwort){
    this.Übersetzung = übersetzung;
    this.Vokabelwort  = vokabelwort;
}

}

public class Vokabelgruppe{

  public string Name {get; set; }
  public List<Vokabel> Vokabeln;

  public Vokabelgruppe (string name){
     this.Name = name;
     Vokabeln = new List<Vokabel>();
  }

}

public class ViewModel{

public Vokabelgruppe SelectedGruppe 
{
	get{
		return _selectedGruppe;
	}
	set{
		   if (Equals(value, _selectedGruppe)) return;
                _selectedGruppe = value;

				Vokabeln = new ObservableCollection<Vokabel>(_selectedGruppe.Vokabeln);
				
                OnPropertyChanged();
	}	
}

public Vokabel SelectedVokabel
{
	get{
		return _selectedVokabel;
	}
	set{
		   if (Equals(value, _selectedVokabel)) return;
                _selectedVokabel = value;

                OnPropertyChanged();
	}	
}

private ObservableCollection<Vokabelgruppe> _gruppen;
public ObservableCollection<Vokabelgruppe> Gruppen
{
    get { return _gruppen; }
    set{
         if (Equals(value, _gruppen)) return;
            _gruppen = value;
            OnPropertyChanged();
     }
}

private ObservableCollection<Vokabeln> _vokabeln;
public ObservableCollection<Vokabeln> Vokabeln
{
    get { return _vokabeln; }
    set{
         if (Equals(value, _vokabeln)) return;
            _vokabeln = value;
            OnPropertyChanged();
     }
}

//InotifyPropertyChanged ist implementiert --> Eigenschaften der Vokabel
public string Übersetzung {get; set;}
public string Vokabelwort {get; set; }

}

Könntest du mir erklären, wie du vorgehen würdest, wenn du nun die Eigenschaften von SelectedVokabel in der View ändern/anzeigen möchtest?

Direktest Binding auf SelectedVokabel.Übersetzung scheint mir sehr unschön zu sein. Jedes mal im Setter von SelectedVokabel die Eigenschaften raus zu holen und in Eigenschaften des ViewModels zu schreiben halte ich für auch nicht besser.

Ich habe auch Implementierungen gesehen, bei denen die Eigenschaft durchgereicht wird -->


   public string Übersetzung 
        {
            get { return _selectedVokabel.Übersetzung ; }
            set
            {
                if (value == _selectedVokabel.Übersetzung ) return;
                _selectedVokabel.Übersetzung = value;
                OnPropertyChanged();
            }
        }

Allerdings bekommt meine View so natürlich nichts mit, wenn sich _selectedVokabel ändert (Die View aktualisiert nicht)

Ich hoffe es war verständlich und du kannst du weiterhelfen.

Danke

Thema: Korrekte MVVM implementierung
Am im Forum: Rund um die Programmierung

Hallo zusammen,

ich habe momentan leider ein Problem mit der Implementierung des MVVM Entwurfsmusters, bzw. bin ich mir nicht sicher ob dies der richtige weg ist.

Ich habe mir jetzt einfach mal ein Beispiel ausgedacht um es zu verdeutlichen:

Das Programm ist ein Vokabeltrainer. Es gibt Vokabelgruppen die eine Liste von Vokabeln enthalten. Die Vokabeln treten niemals ohne Gruppe auf.

Model:


public class Vokabel{
 
 public string Übersetzung {get; set;}
 public string Vokabelwort {get; set; }

 public Vokabel(string übersetzung, string vokabelwort){
    this.Übersetzung = übersetzung;
    this.Vokabelwort  = vokabelwort;
 }

}

public class Vokabelgruppe{
  
  public string Name {get; set; }
  public List<Vokabel> Vokabeln;

  public Vokabelgruppe (string name){
     this.Name = name;
     Vokabeln = new List<Vokabel>();
  }

}

Da die Vokabeln nie ohne Gruppen auftreten, soll das ganze auch über die Vokabelgruppen
gebunden werden.

Für mein Verständnis hätte ich also nur ein VokabelgruppenViewmodel.

Habt ihr dann im ViewModel direkt eine Observablecollection<Vokabelgruppen> (es kann mehrere geben), oder ein 2tes ViewModel und dann eine Observablecollection<VokabelgruppenViewmodel>? Ich habe bereits beide Implementierungen gesehen, sehe aber keine Vor und Nachteile.

Nun gibt es zum Beispiel 2 Listboxen, in einer die Gruppen und in der anderen die dazugehörigen Vokabeln. Wie implementiert ihr nun diese Abhängigkeit richtig?

Ich habe im ViewModel zusätzlich eine Observablecollection<Vokabel> und meine gerade selektierte Gruppe als Eigenschaft. Im setter hole ich mir aus der Gruppe die List<Vokabel> und erzeuge eine neue Observablecollection<Vokabel>. Ich muss hier nur dafür sorgen, dass die Listen bei Änderungen immer Synchron sind. Habt ihr hierzu vielleicht auch einen bewährten Ansatz?

Ich setze übrigens kein Framework ein, da ich erst den Umgang mit dem Entwurfsmuster "beherrschen" möchte. Sollte aber ein Framework ein guten Ansatz für dieses Szenario haben, gucke ich es mir natürlich gerne an.

Danke euch

Thema: alle objekte einer Klasse auswerten
Am im Forum: Grundlagen von C#

Ich würde die Klassen nicht verschachteln sondern getrennt voneinander Programmieren und dann zwischen den Klassen eine Assoziation herstellen:


class Haus
{
  public  List<Aufgang> Sonnenaufgänge {get; set; }/* Ich habe es so verstanden, dass du   mehrere Speichern möchtest, deswegen eine List<T> */


  public Haus(){
    Sonnenaufgänge  = new List<Aufgang>();
   }
 
 
  public int BettenImHaus()
  {
     foreach(var aufgang in Sonnenaufgänge ){
       //BettenImHaus += aufgang.Zimmer verarbeiten usw.
     }
     return BettenImHaus;
  }

} 

class Aufgang
{
    public void set_Zimmer(int x)
    {...}
    public int get_Zimmer()
    {...}
    int Zimmer
    public void set_BettenJeZimmer(int y)
   {...}
    public int get_BettenJeZimmer()
    {...}
    int BettenJeZimmer
}







Haus haus = new Haus();
Aufgang auf = new Aufgang ();
auf.set_Zimmer(20);
auf.set_BettenJeZimmer(5);

haus.Sonnenaufgänge.add(auf);





Thema: Timer mit höherer Auflösung als 15ms
Am im Forum: Grundlagen von C#

Ohne das jetzt getestet zu haben, wie genau ist denn Task.delay?

Sollte ja nicht so aufwendig zu sein eine Klasse zu schreiben die z.B. eine Action entgegen nimmt und ne Methode Start/Stop hat und eine mit einer Schleife:


do{
   Action();
   await Task.delay(Timer).ConfigureAwait(false);
}
while(isStarted)

Thema: [erledigt] Methoden überladen mit Klasse als Parameter --> Polymorphie
Am im Forum: Grundlagen von C#

Zitat von malignate
Das nennt sich dynamische Bindung: Dynamische Bindung

Gibts es in C# allerdings nicht. Die einzige Möglichkeit: Selber implementieren.

Ohne dynamisches Binden würde Polymorphie doch überhaupt nicht funktionieren oder vertue ich mich hier? Spätestens wenn du eine Methode in c# als virtual kennzeichnest wird sie mit in die Virtual function Table übernommen und so weiter.....

Thema: To.List() Objekt als Parameter übergeben
Am im Forum: Datentechnologien

Int ist eigentlich ein Wertetyp und kann nicht null sein. int? ist aber nullable und nützlich für Datenbanken --> Datenbankfeld nicht gefüllt. int? kann also null sein.

Vermutung wäre jetzt aus deiner List<int> eine List<int?> zu machen, wobei ich nicht sicher bin was EndDateCallsReceived eigentlich für ein Typ ist

Thema: Anzahl aller serializierten Objekte in Datei auslesen ---> BinaryFormatter!
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Du müsstest das BinaryFormat wohl dahingehend untersuchen, ob man ausmachen kann wann ein Objekt aufhört und das neue Anfängt und dementsprechend die Objekte zählen. Den Aufwand halte ich aber nicht für lohnenswert oder gewinnbringend, falls das überhaupt zuverlässig gelingen sollte.
Ich denke die einfachste/beste Möglichkeit wäre zu deserialisieren und dann ein count().

Thema: Spiel "LAN-fähig" machen
Am im Forum: Netzwerktechnologien

Guck dir doch mal das Zyan Framework für die Kommunikation an. Du musst dich hier nicht großartig mit Protokollen beschäftigen und solltest schnell vorwärts kommen:

Zyan

Zu Punkt 4 kann ich nur vermuten, dass es Sinnvoll ist den Server die Berechnungen (Kollision usw. )übernehmen zu lassen. Aber da kann dir jemand anderes wahrscheinlich besser helfen.

Thema: Repository-Pattern mit ORM sinnvoll?
Am im Forum: Rund um die Programmierung

Danke, ging nur um die Theorie, ob ihr da Probleme seht. So könnte man einfache Abfragen mit einer Methode abdecken und hätte für jede Eigenschaft nicht eine eigene wie

GetArtikelByName
GetArtikelByEAN

usw...

Ich habe in einigen Implementierungen diesen Ansatz gesehen, aber wiederum auch Implementierungen, die für jede Abfrage eine eigene Methode hatten und ich war mir deswegen unsicher, ob es hierfür spezielle Gründe gibt.

Thema: Repository-Pattern mit ORM sinnvoll?
Am im Forum: Rund um die Programmierung

Hallo nochmal,

ich habe mir in der Zwischenzeit weitere Implementierungen angeguckt und dabei ist mir eine Kleinigkeit aufgefallen, die ich gerne mal auf mein Beispiel beziehen würde:

In der IRepositoy Schnittstelle befindet sich meistens eine GetAll Methode.
Wäre es vollkommen falsch bzw. seht ihr für die Zukunft Probleme, wenn diese ein Predicate oder eine Where clause entgegen nimmt?

Hierüber würden dann einfache Abfragen nach bestimmten Eigenschaften gemacht werden. Bei komplexeren Abfragen die Joins oder ähnliches verlangen, gibt es dann eigene Methoden.

Mit Dapper + SimpleCrud so in der Art:



IList<Artikelgruppe> GetAll (string where){

 return connection.GetList<Artikelgruppe>(where);  
}

Ich weiß nicht was GetList macht wenn man null übergibt, aber das wäre ja schnell überprüft und ohne Bedingung bekommt man halt die komplette Tabelle.

Thema: Repository-Pattern mit ORM sinnvoll?
Am im Forum: Rund um die Programmierung

Danke für die ausführliche Antwort!

Thema: Repository-Pattern mit ORM sinnvoll?
Am im Forum: Rund um die Programmierung

Alles klar, danke euch. Hättest du noch Zeit kurz deine bedenken zu nennen? Stichworte würden natürlich reichen, einige Sachen werden mir dann wahrscheinlich selber auf fallen.

Thema: Repository-Pattern mit ORM sinnvoll?
Am im Forum: Rund um die Programmierung

wie sieht es bei euch denn mit der Business-Schicht aus?

Habt ihr eine zwischen ViewModel und DAL und tut die etwas anderes als die Daten durchzureichen?

In den aller meisten Methoden reiche ich hier nur die Daten zum VM und deswegen fühlte ich mich beim Video von der Basta angesprochen :-D

Thema: Repository-Pattern mit ORM sinnvoll?
Am im Forum: Rund um die Programmierung

Erstmal danke für eure Antworten.

Wenn ich nun ein generisches Repository habe und daraus z.B. ein Artikel-Repository und Artikelgruppen-Repository erzeuge, habe ich schon mal 2 Repositorys für CRUD.

Zugreifen auf diese Repository tue ich eigentlich über die Schnittstelle:


IRepository<Artikel> ArtRep = new ArtikelRepository();
IRepository<Artikelgruppe> ArtGruRep = new ArtikelgruppeRepository();

Wenn ich es so machen würde, wäre aber das Problem, dass ich alle Methode in IRepository<> haben muss, um auf die ausprogrammierten zuzugreifen. Für Standart-CRUD kein Problem, aber für große Abfragen die spezifisch sind schon.

Es würde ja keinen Sinn machen, ein generisches Repository zu nutzen, wenn ich für jede Klasse ein eigenes generisches habe.

Schiebt ihr dann zwischen dem generischen IRepository<> und dem ArtikelRepository eine weitere Schnittstelle für die spezifischen Abfragen?

Ich habe hier durch Zufall noch einen Vortrag der Basta gefunden, der eigentlich genau mein Thema abdeckt (Bis auf EF <> micro-ORM). Der Redner möchte hier eine alternative zum Repository-Pattern zeigen. Hat dies schon mal jemand von euch gesehen und könnte sein Vorgehen bewerten? https://www.youtube.com/watch?v=EmLDDb_V3LU