2010-11-30 9 views

Respuesta

20

Sí. Es posible. Entity Framework genera Partial Classes.

Eso significa que puede crear otro archivo que contenga otra parte de la definición de Clase parcial (con sus métodos adicionales) y todo funcionará perfectamente.

+0

using System ; usando System.Collections.Generic; usando System.Linq; usando System.Web; FOO.Models de espacio de nombres { clase parcial pública FOO_USERS { barra public void() { // el código del método aquí }} } – eka808

+0

funciona este código :) – eka808

+0

¿Es posible utilizar ese método dentro de una consulta LINQ? .. – Json

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

Esto creará un método de extensión que está bien la mayor parte del tiempo. Sin embargo, si desea agregar una propiedad (para apuntarla a expresiones de propiedad), las clases parciales serán el camino a seguir. – dognose

4

Un ejemplo para la primera respuesta:

si tiene una entidad llamada Flower puede utilizar esta clase partial para añadir método a ella:

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

Asumiendo que tiene su clase parcial con un precio de atributo de Entity Framework de la base de datos:

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

si no desea utilizar otra clase parcial, puede definir su propia clase personalizada que contenga la entidad original almacenada como un atributo. Se pueden añadir entonces cualquier atributo personalizado extra y método

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 ; 
     } 

    } 
} 

Entonces dondequiera que desee utilizarlo, se crea el objeto clase personalizada y almacenar en ella la del marco de la entidad:

//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 
Cuestiones relacionadas