Pregunta

Soy nuevo en Linq to Sql, lo que me gustaría lograr es crear una sola propiedad de solo lectura en la clase Entity que sea una combinación de múltiples campos, específicamente quiero crear un campo de nombre que combine- título , nombre y apellido.

Puedo ver cómo hacerlo cambiando el archivo .designer.cs pero sé que no debo tocar eso.

Estoy intentando hacer esto para que en los datos dinámicos obtenga una sola columna en lugar de varias columnas.

¿Fue útil?

Solución

El truco aquí es usar una clase parcial ; cree un nuevo archivo .cs y en el mismo espacio de nombres agregue una nueva clase nombrada para su tipo:

namespace My.Data.Namespace {
    partial class Employee {
        public string Foo {
            get {return Forename + " " + Surname; } // etc
        }
    }
}

Este combina con el archivo de clase original (generado). Este es un enfoque común para agregar funcionalidades adicionales a las entidades generadas (incluido el contexto de datos). También es posible que desee ver "métodos parciales", ya que LINQ-to-SQL define y utiliza varios métodos parciales.

Una advertencia: si su dbml se llama MySystem.dbml , entonces evite crear un archivo MySystem.cs (presumiblemente para sus clases parciales ); Hay un error en el generador de código que puede hacer que esto falle. Solo póngale otro nombre.

Otros consejos

en su declaración de selección de LINQ, ¿por qué no usa algo como:

select new {FullName = x.FirstName + " " + x.Surname};

No estoy seguro de si la sintaxis es 100%, pero revisa la idea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top