2016-04-21 6 views
-1

Ich habe ein ADO.NET-Entitätsdatenmodell erstellt. Wo kann ich hingehen, um den Kurs zu überprüfen? Ich möchte die Datentypen überprüfen und einige DisplayName Attribute hinzufügen. HierSo zeigen Sie den Code eines ADO.NET-Entitätsdatenmodells an

ist das Modell aus dem Solution Explorer:

enter image description here

Dank.

+0

http://www.entityframeworktutorial.net/create-poco-entity.aspx –

Antwort

0

Wenn Sie ein Modell aus einer Datenbank generieren (was hier der Fall zu sein scheint), werden einige verschiedene Codedateien erstellt. Um den Code für den Kontext zu erhalten, erweitern Sie ProgramMasterList.Context.tt. Sie sehen dort eine .cs-Datei für die Kontextklasse.

Dann wird für jede Tabelle, die Sie aus Ihrer Datenbank als Teil des Modells ausgewählt haben, eine Entitätsklasse erstellt. Sie können diese finden, indem Sie ProgramMasterList.tt erweitern. Wenn Sie beispielsweise eine Tabelle mit dem Namen "Person" haben, verfügen Sie möglicherweise über eine Entitätsklassendatei Person.cs, in der die Klasse Person definiert ist.

Nun haben Sie erwähnt, dass Sie die Klassen ändern möchten, um Eigenschaften hinzuzufügen. Wenn Sie die Klassendateien unter ProgramMasterList.tt ändern, die dynamisch vom Entity Framework generiert werden, dann müssen Sie das Modell das nächste Mal aus der Datenbank aktualisieren (z. B. um eine neue Tabelle aus Ihrer DB in Ihr Modell einzufügen) gemacht wird überschrieben. Zum Glück gibt es einen besseren Weg. Jede Klasse unter ProgramMasterList.tt ist eine Teil Klasse. Sie können also zu dieser Klasse hinzufügen, ohne die Datei zu ändern, die das Entity Framework automatisch generiert hat. Erstellen Sie einfach eine neue Datei, deklarieren Sie die Person-Klasse (als Teil) und fügen Sie Ihre zusätzlichen Methoden, Eigenschaften usw. hinzu. Ich würde vorschlagen, alle diese "Erweiterungen" in einen Ordner zu legen, um sie zu organisieren, aber das liegt an Ihnen.

So könnte es etwa so aussehen:

Lösungsstruktur:

  • ProgramMasterList.edmx
    • ProgramMasterList.Context.tt
      • ProgramMasterList.Context.cs
    • ProgramMasterList.Designer.cs
    • ProgramMasterList.edmx.diagram
    • ProgramMasterList.tt
      • Person.cs
  • Extensions
    • Person.cs

Person.cs (unter ProgramMasterList.tt)

//------------------------------------------------------------------------------ 
// <auto-generated> 
//  This code was generated from a template. 
// 
//  Manual changes to this file may cause unexpected behavior in your application. 
//  Manual changes to this file will be overwritten if the code is regenerated. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

namespace SomeNamespace 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class Person 
    { 
     public Person() 
     { 
     } 

     public int PersonID { get; set; } 
     public string Name { get; set; } 
     public DateTime Birthdate { get; set; } 
    } 
} 

Person.cs (im Ordner Extensions) Hinweis: Stellen Sie sicher, dass der Namespace genau mit dem Namespace aus der anderen Person.cs-Datei übereinstimmt.

namespace SomeNamespace 
{ 
    public partial class Person 
    { 
     // Custom property (not auto-generated by Entity Framework) 
     public string DisplayName 
     { 
      get { return PersonID + " - " + Name + " (" + Birthdate.ToString() + ")"; } 
     } 
    } 
} 
+0

vielen Dank. Wie fügen Sie Attribute wie "[Key]" und "[Required (ErrMessage =" ")]' zu diesen Eigenschaften hinzu? –

+0

Diese Art von Attributen wird häufiger in ersten Code-Modellen gesehen. In der Datenbank würden Sie den Schlüssel nicht durch ein Attribut, sondern durch den Modelleditor setzen. Gewöhnlich macht EF einen guten Job, indem er basierend auf der Datenbankstruktur automatisch bestimmt, welche Spalte (n) der Primärschlüssel ist/sind. Wenn dies jedoch falsch ist, können Sie mit der rechten Maustaste auf eine Eigenschaft in einer Entität klicken, um sie zu ändern ein Schlüssel. Was das Attribut "Required" anbetrifft, könnten Sie die Spalte nicht-nullbar machen, aber das würde Ihnen nicht erlauben, eine Fehlermeldung zu setzen. Ich würde eine Validierung mit der IValidatableObject-Schnittstelle vorschlagen. – TheRotag