2010-11-30 13 views

Antwort

20

Ja. Es ist möglich. Entity Framework generiert Partial Classes.

Das bedeutet, dass Sie eine andere Datei erstellen können, die einen anderen Teil der partiellen Klassendefinition enthält (mit Ihren zusätzlichen Methoden) und alles wird gut funktionieren.

+0

using System ; mit System.Collections.Generic; mit System.Linq; mit System.Web; Namespace Foo.Models { public partial class FOO_USERS { public void bar() { // den Code der Methode hier } } } – eka808

+0

dieser Code funktioniert :) – eka808

+0

Ist es möglich, zu verwenden, Diese Methode in einer LINQ-Abfrage? .. – Json

2
public static class ModelExtended 
{ 
    public static void SaveModelToXML(this Model1Container model, string xmlfilePath) 
    { 
     ///some code 
    } 
} 
+0

Dies wird eine Erweiterungsmethode erstellen, die die meiste Zeit in Ordnung ist. Wenn Sie jedoch eine Eigenschaft hinzufügen möchten (um sie in Property-Ausdrücken zu verwenden), sind partielle Klassen der richtige Weg. – dognose

4

Ein Beispiel für die erste Antwort:

wenn Sie eine Entität namens haben Flower können Sie diese partial Klasse verwenden Methode, um es für das Hinzufügen von:

namespace Garden //same as namespace of your entity object 
{ 
    public partial class Flower 
    { 
     public static Flower Get(int id) 
     { 
      // 
     } 
    } 
} 
0

Vorausgesetzt, dass Sie mit Ihrem Teil Klasse ein Entity Framework Attribut Preis aus der Datenbank:

namespace Garden //same as namespace of your entity object 
    { 
     public partial class Flower 
     { 
      public int price; 
      public string name; 
      // Any other code ... 
     } 
    } 

Wenn Sie keine andere Teilklasse verwenden möchten, können Sie eine eigene benutzerdefinierte Klasse definieren, die die ursprüngliche Entität enthält, die als Attribut gespeichert ist. Sie können hinzufügen, dann eine beliebige zusätzliche benutzerdefinierte Attribute und Verfahren

namespace Garden //same as namespace of your entity object 
{ 
    public class CustomFlower 
    { 
     public Flower originalFlowerEntityFramework; 

     // An extra custom attribute 
     public int standardPrice; 


     public CustomFlower(Flower paramOriginalFlowerEntityFramework) 
     { 
      this.originalFlowerEntityFramework = paramOriginalFlowerEntityFramework 
     } 


     // An extra custom method 
     public int priceCustomFlowerMethod() 
     { 
      if (this.originalFlowerEntityFramework.name == "Rose") 
       return this.originalFlowerEntityFramework.price * 3 ; 
      else 
       return this.price ; 
     } 

    } 
} 

Dann, wo immer Sie es verwenden möchten, können Sie Ihre eigene Klasse Objekt und speichern darin, das eine vom Entity Framework erstellen:

//Your Entity Framework class 
Flower aFlower = new Flower(); 
aFlower.price = 10; 
aFlower.name = "Rose"; 

// or any other code ... 

// Your custom class 
CustomFlower cFlower = new CustomFlower(aFlower); 
cFlower.standardPrice = 20; 

MessageBox.Show("Original Price : " + cFlower.originalFlowerEntityFramework.price); 
// Will display 10 
MessageBox.Show("Standard price : " + cFlower.standardPrice); 
// Will display 20 
MessageBox.Show("Custom Price : " + cFlower.priceCustomFlowerMethod()); 
// Will display 30 
Verwandte Themen