Pergunta

Eu sou novo para LINQ to SQL, o que eu gostaria de conseguir é criar uma única leitura única propriedade na classe Entity que é uma combinação de vários campos, especificamente eu quero criar um campo de nome que o título combines- , nome e sobrenome.

Eu posso ver como fazê-lo alterando o arquivo .Designer.cs mas sei que não tenho que tocar isso.

Eu estou tentando fazer isso para que em dados dinâmicos eu recebo uma única coluna em vez de várias colunas.

Foi útil?

Solução

O truque aqui é usar um partial class; criar um novo arquivo .cs, e no mesmo namespace adicionar uma nova classe chamada para o seu tipo:

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

Este combina com o (gerado) arquivo classe original. Esta é uma abordagem comum para adicionar funcionalidades adicionais em entidades gerados (incluindo o contexto de dados). Você também pode querer olhar para "métodos parciais", já que uma série de métodos parciais são definidos e utilizados por LINQ to SQL.

Uma advertência: se o seu dbml é chamado MySystem.dbml, em seguida, evitar criação de um arquivo MySystem.cs (presumivelmente para suas classes parciais); há um bug no código-gerador que pode causar esta a falhar. Basta nomeá-la algo mais.

Outras dicas

em sua LINQ instrução select, por que não usar algo como:

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

Não tenho certeza se a sintaxe é 100% lá, mas confira a idéia.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top