{"id":280,"date":"2016-02-17T00:46:33","date_gmt":"2016-02-16T22:46:33","guid":{"rendered":"http:\/\/localhost\/wordpress\/?page_id=280"},"modified":"2016-09-26T00:56:01","modified_gmt":"2016-09-25T22:56:01","slug":"entity-framework","status":"publish","type":"page","link":"https:\/\/blog.ghbss.de\/?page_id=280","title":{"rendered":"Entity-Framework"},"content":{"rendered":"<p>Um die Daten zu persistieren und als ORM-Framework haben wir uns f\u00fcr Entity-Framework (Version 6) entschieden.<\/p>\n<h2>Code-First<\/h2>\n<p>Code-First bietet die gr\u00f6\u00dften Freiheit bei der Erstellung der DALs daher auch unsere erster Wahl.<\/p>\n<h2>Models Erstellen<\/h2>\n<div id=\"attachment_344\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.ghbss.de\/wp-content\/uploads\/2016\/02\/CompositePattern.png\" rel=\"attachment wp-att-344\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-344\" class=\"wp-image-344 size-medium\" alt=\"CompositePattern\" src=\"http:\/\/blog.ghbss.de\/wp-content\/uploads\/2016\/02\/CompositePattern-300x298.png\" width=\"300\" height=\"298\" srcset=\"https:\/\/blog.ghbss.de\/wp-content\/uploads\/2016\/02\/CompositePattern-300x298.png 300w, https:\/\/blog.ghbss.de\/wp-content\/uploads\/2016\/02\/CompositePattern-150x150.png 150w, https:\/\/blog.ghbss.de\/wp-content\/uploads\/2016\/02\/CompositePattern.png 313w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-344\" class=\"wp-caption-text\">Composite Pattern<\/p><\/div>\n<p>F\u00fcr die Erstellung der Model-Klassen nehmen wir die Datenstruktur der &#8222;Composite-Pattern&#8220; her.<\/p>\n<p>Hier wird der gemeinsame Basis-Klasse als Schnittstelle (Interface) verwendet um die Daten bereitzustellen bzw. entgegen zunehmen.<\/p>\n<p>Bei der Einsatz der &#8222;Code-First&#8220;-Methode habe ich festgestellt, dass EF beim Speichern der Objekte darauf achtet , ob eine extra Tabelle f\u00fcr &#8222;Component&#8220;-Models erzeugt werden muss oder nicht.<\/p>\n<p>Es h\u00e4ngt stark von den Datenbasis ab, ob jetzt weitere Klassen von &#8222;Composite&#8220;\/&#8220;Leaf&#8220;-Abgeleitet werden oder jeweils eine neue Klasse erzeugt werden muss.<\/p>\n<h2>Datenbank-Context<\/h2>\n<p><em>Wenn der DAL(Data Access Layer) in ein externes Bibliothek erzeugt und definiert wird, Connection-String muss in alle config-files gespeichert werden.<\/em><\/p>\n<p>&nbsp;<\/p>\n<h3>Connection-String<\/h3>\n<p>Wird in Web- oder App-.Config Datei definiert und sieht wie folgt aus:<code><br \/>&lt;connectionStrings&gt;<br \/>&lt;add name=\"SchoolContext\" connectionString=\"Data Source=(localdb)MSSQLLocalDB;Initial Catalog=<b>PROJECTCATALOG<\/b>;Integrated Security=SSPI;\" providerName=\"System.Data.SqlClient\" \/&gt;<br \/>&lt;\/connectionStrings&gt;<br \/><\/code><br \/>Hier wird auf dem lokalen sql-server (<em><strong>(localdb)MSSQLLocalDB<\/strong><\/em>) ein Catalog\/Datenbank(<b>PROJECTCATALOG<\/b>) benutzt.<\/p>\n<h3>Datenbank Initialisieren<\/h3>\n<p>Hier geht\u2019s darum den Datenbank jedes mal l\u00f6schen und neu erstellen , wenn sich die Definition der Models sich \u00e4ndert.<\/p>\n<p>Hierf\u00fcr erstellt man erst eine Klasse die von &#8222;System.Data.Entity.DropCreateDatabaseIfModelChanges&#8220;.<br \/>In diese Klasse \u00fcberschreiben wir dann die Methode:&#8220;Seed&#8220;<\/p>\n<p><code>public class ProjektDbContextInitializer: System.Data.Entity.DropCreateDatabaseIfModelChanges {<br \/>protected override void Seed(ProjektDbContext context) {<br \/>\/\/ Model-Objekte erzeugen und dem Context hinzuf\u00fcgen<br \/>\/\/ context.SaveChanges() aufrufen um die Daten zu speichern<br \/>}<br \/>}<br \/><\/code><\/p>\n<h2>Beziehungen<\/h2>\n<h3>One-to-Many<\/h3>\n<p>Hierf\u00fcr man definiert eine am besten virtuelle Collection in der Klasse:<br \/><code><br \/>class Composite: Component {<br \/>public virtual ICollection children {get; set;}<br \/>public Composite() {<br \/>children = new<br \/>}<br \/>}<br \/><\/code><\/p>\n<h3>One-to-One<\/h3>\n<p>Many-to-Many<\/p>\n<p>&nbsp;<\/p>\n<h2>Links(Intern):<\/h2>\n<ul>\n<li><a href=\"http:\/\/blog.ghbss.de\/web-development\/asp-net-mvc-5\/asp-net\/\">ASP.NET(Intern)<\/a>\n<li><a href=\"http:\/\/blog.ghbss.de\/sw-entwicklung\/design-pattern\/\">design pattern<\/a> <\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Um die Daten zu persistieren und als ORM-Framework haben wir uns f\u00fcr Entity-Framework (Version 6) entschieden. Code-First Code-First bietet die gr\u00f6\u00dften Freiheit bei der Erstellung der DALs daher auch unsere erster Wahl. Models Erstellen F\u00fcr die Erstellung der Model-Klassen nehmen wir die Datenstruktur der &#8222;Composite-Pattern&#8220; her. Hier wird der gemeinsame Basis-Klasse als Schnittstelle (Interface) verwendet [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":264,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-280","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=\/wp\/v2\/pages\/280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=280"}],"version-history":[{"count":5,"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=\/wp\/v2\/pages\/280\/revisions"}],"predecessor-version":[{"id":483,"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=\/wp\/v2\/pages\/280\/revisions\/483"}],"up":[{"embeddable":true,"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=\/wp\/v2\/pages\/264"}],"wp:attachment":[{"href":"https:\/\/blog.ghbss.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}