Вопрос

Я новичок в Linq to Sql, чего я хотел бы добиться - создать единственное свойство только для чтения в классе Entity, которое представляет собой комбинацию нескольких полей, в частности, я хочу создать поле имени, которое объединяет заголовок , имя и фамилия.

Я могу понять, как это сделать, изменив файл .designer.cs, но знаю, что я не должен это трогать.

Я пытаюсь сделать это, чтобы в динамических данных я получал один столбец, а не несколько столбцов.

Это было полезно?

Решение

Хитрость в том, чтобы использовать частичный класс ; создайте новый файл .cs и в том же пространстве имен добавьте новый класс с именем для вашего типа:

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

Этот объединяется с исходным (созданным) файлом класса. Это общий подход для добавления дополнительной функциональности в сгенерированные объекты (включая контекст данных). Возможно, вы также захотите взглянуть на «частичные методы», поскольку LINQ-to-SQL определяет и использует несколько частичных методов.

Одно предупреждение: если ваш dbml называется MySystem.dbml , тогда избегайте создания файла MySystem.cs (предположительно для ваших частичных классов ); в генераторе кода есть ошибка, которая может привести к сбою. Просто назовите это как-нибудь еще.

Другие советы

в вашем утверждении LINQ select, почему бы вам не использовать что-то вроде:

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

Не уверен, что синтаксис там 100%, но проверь идею.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top