Entity Framework-Entitäten (zusammen mit dem Framework) sind Ihre Datenschicht. In vielen Anwendungen werden sie auch Teil Ihrer Business-Schicht - und es ist fraglich, ob das gut ist oder nicht (ich persönlich mag das nicht, aber wenn Sie es mit dem Repository-Modell abstrahieren, gibt es ein gutes Argument, dass Sie verlieren einige der Vorteile von EF).
Je nachdem, wie Sie Ihren Code trennen (und es klingt wie Sie das Repository-Muster verwenden) haben Sie möglicherweise ein Repository mit einigen Geschäftslogik, oder eine Services-Schicht (meine Präferenz für 3-Tier-Anwendungen) wo Geschäftslogik (meistens) passiert.
Ich würde argumentieren, dass Sie View-Modelle sowie Teil Ihres Präsentationsmodells betrachten sollten - aber wenn Sie MVC und Daten-Annotationen (die für diesen Job hervorragend sind) verwenden, um Ihr Modell zu überprüfen, haben Sie gerade angehäuft Haufen von Geschäftslogik in ihnen.
Der wichtigste Ort, an dem sich die Geschäftslogik nicht einschleichen kann, ist Ihre Präsentationsebene und vor allem Ihre Ansichten und Controller. Der Ansatz, wie Sie den Rest Ihrer Anwendung strukturieren, hängt stark von dem von Ihnen gewählten Framework, der Größe Ihrer Anwendung und der Bereitstellungsstruktur der Anwendung ab.
So so klar wie möglich zu sein, das ist, was ich tun *:
Ansichten < --Presentation Schicht nur
Controller < --Presentation Schicht nur (vielleicht am Ende mit leicht "fetten" Controller in einigen Fällen, z. B. .NET Mitgliedschaft anmelden)
Modelle anzeigen < - Präsentationsebene, aber wenn hier Prüfungen durchgeführt werden, werden häufig auch Geschäftsregeln getestet.
Service Layer < --Business Schicht, wenn verwendet
Repositorys < --Could nur Datenschicht sein, oder Mischung aus Business-Schicht. Wenn Sie das Repository-Muster zu tun versuchen zu vermeiden und Ihre DbSets direkt auszusetzen, da dies sofort die Abstraktion besiegt versuchen Sie (mögliche Ausnahmen, zB - Net Mitgliedschaft), um
Entities < --Datenzurückhalten Schicht, möglicherweise auch mit Geschäftslogik, je nachdem, wie Sie Ihre Anwendung strukturieren. Präsentationsschicht
Entities - - * nicht als autoritative
Was meinst du mit "teilen sie in Schichten?" – user1477388
Modelle und Entitäten haben unterschiedliche Sichtweisen. Entitäten (Domain-Klassen) sind, wie Ihre Datenschicht und Business-Schicht Daten verwenden. Modelle sind, wie Ihre Präsentation (View) Daten verwendet. Verwenden Sie ein Werkzeug wie AutoMapper zum Transponieren im Controller. – Brian
Domain Entities sollten in BL oder DL liegen? Vielen Dank! –