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
- Extensions
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() + ")"; }
}
}
}
http://www.entityframeworktutorial.net/create-poco-entity.aspx –