2010-10-19 31 views
18

Estoy utilizando Entity Framework por primera vez y quiero saber si lo siguiente es posible: he generado mis clases desde el DB y tengo una llamada Categoría.Agregar una propiedad personalizada a Entity Framework?

Obviamente tiene todos mis campos en la tabla (ID, CategoryName, SortOrder, etc.) pero quiero saber si puedo agregar una propiedad personalizada que no está en la tabla, pero en realidad es el resultado de una costumbre método.

Quiero agregar una nueva propiedad llamada 'CategoryURL' que es básicamente la propiedad 'CategoryName' ejecutada a través de un método personalizado y devuelve una cadena con guiones.

Mi pensamiento inicial es heredar de la clase de categoría generada y crear algo así dentro?

public string CategoryURL 
{ 
    get{ return MyCustomMethod(this.CategoryName) } 
} 

¿Es este el enfoque correcto? ¿Y 'this.CategoryName' funcionará como creo que debería? Básicamente, el resultado final es cuando devuelvo una lista de 'Categoría'. Quiero que esto sea parte de la clase para que pueda usarlo en mi ciclo foreach.

Espero que esto tenga sentido?

Respuesta

19

se debe utilizar una clase partial:

public partial class Category 
{ 
    public string CategoryURL 
    { 
     get{ return MyCustomMethod(this.CategoryName); } 
    } 
} 

De esta manera this.CategoryName funcionará igual como se esperaba.

Esto funciona porque las clases generadas por el generador de código de entidad de marco también generan clases partial. También significa que puede volver a generar de forma segura las clases desde la base de datos sin afectar las clases parciales que usted mismo ha definido.

+0

excelente gracias – leen3o

+0

Eso es inteligente! En cierto modo, es un poco espeluznante porque parece * demasiado * inteligente. ¿Tenemos alguna razón para creer que Microsoft podría romper esto en una futura versión de EF? ¡Supongo que debería preocuparme demasiado ya que esta respuesta tiene casi cuatro años y me funcionó! –

9

se debe añadir el atributo [NotMapped] a la propiedad

Cuestiones relacionadas