Inhalte aufrufen

Profilbild
- - - - -

Neue Entity einfügen


  • Bitte melden Sie sich an, um eine Antwort zu verfassen.
3 Antworten zu diesem Thema

#1 Razora

Razora

    Newbie

  • Members
  • Punkt
  • 5 Beiträge

Geschrieben: 01 June 2015 - 15:35

Hallo,

 

ich bin komplett neu beim Thema SmartStore.Net. Jedoch bin ich nun in der Situation Anpassungen an der Datenbank vorzunehmen. Im speziellen geht es darum, dass ich eine neue Entität benötige. Meine Frage ist nun, wie ich diese neue Entität in SmartStore.Net einbaue.

Ich habe bisher nur dies hier gefunden http://community.sma...lugin/?p=259765

Das habe ich auch sowet befolgt, jedoch habe ich die neue Entität nur in die Datenbank geben können. Ich bin jetzt noch nicht in der Lage neue Daten einzufügen bzw. auszulesen. Gibt es vielleicht eine Doku, wie ich die Klasse in die gegebene Struktur einpflegen kann und damit dann auch die CRUD-Methoden ausführen kann?

 

 

Grüße

Razora



#2 Murat Cakir

Murat Cakir

    SmartStore AG

  • Administrators
  • 1118 Beiträge

Geschrieben: 01 June 2015 - 20:27

Das zu implementierende Schichten-Modell sieht für gewöhnlich folgendermassen aus:

  1. POCO-(Domain)-Klasse, z.B. MyEntity : BaseEntity
  2. Datenbank Mapping-Definition: z.B. MyEntityMap : EntityTypeConfiguration<MyEntity>
  3. Datenbank-Migrationscode, z.B. MyEntityMigration > DbMigration
  4. Service-(BOM)-Interface, z.B. IMyEntityService
  5. Service-(BOM)-Implementierung, z.B. MyEntityService : IMyEntityService
  6. Registrierung von MyEntityService als Dependency in der DependencyRegistrar-Klasse
  7. Ein oder mehrere MVC Controller (je nach Anforderung), z.B. MyEntityController : Controller
  8. Razor Views für Edit, View etc.

Einen Scaffolding-Mechanismus, der automatisch Controller und/oder Views bereitstellt, gibt es nicht.

 

Das gesamte Schichten-Modell lässt sich in einem einzeln Plugin-Projekt autark kapseln, siehe bspw. Plugins SmartStore.GoogleMerchantCenter oder SmartStore.ShippingByWeight. Diese beiden Plugins haben eigene Entities und implementieren demzufolge auch Punkte 1 bis 3.

 

Unser Developer Guide befindet sich noch in Arbeit, bis dahin empfehle ich ein sorgfältiges Studium dieser Plugins. Bei technischen Fragen stehen wir hier gerne zur Verfügung.


Murat Cakir
SmartStore AG


#3 Razora

Razora

    Newbie

  • Members
  • Punkt
  • 5 Beiträge

Geschrieben: 02 June 2015 - 12:10

Hallo,

 

vielen Dank für die Antwort. Ich habe die Schritte soweit alle befolgt. Nun habe ich aber noch eine weitere Frage: Wenn ich die neue Entität in einem Controller nutzen möchte, welcher im Namespace "SmartStore.Web.Controllers" liegt, wie muss ich die beiden Projekte verbinden, damit ich mir eine Instanz meines IMyEntityServices zu erstellen?



#4 Murat Cakir

Murat Cakir

    SmartStore AG

  • Administrators
  • 1118 Beiträge

Geschrieben: 02 June 2015 - 17:56

Wenn du deinen Code vom Core aus verwenden möchtest (also SmartStore.Web), dann ist ein Plugin keine günstige Wahl. Denn der Core hat keine direkten Verweise zu Plugins, eher umgekehrt. D.h. also, IMyEntityService ist dem SmartStore.Web Projekt gänzlich unbekannt und kann daher an dieser Stelle nicht verwendet werden.

 

Du hast zwei Lösungsmöglichkeiten:

  1. Deinen Code raus aus dem Plugin, und rein in den Core. Also verteilen in den Projekten SmartStore.Core, Data, Services und Web.
  2. Empfohlen: was auch du immer du im Controller bewerkstelligen wolltest, lässt sich mit Sicherheit auch im Plugin gekapselt realisieren (Action Filter, Event, Widget etc.).

Um dir einen hilfreichen Tipp zu geben zu können, müsste ich allerdings wissen, was genau du vorhattest im Controller.


Murat Cakir
SmartStore AG