Добавление новых методов в сгенерированные классы LINQ to SQL - PullRequest
10 голосов
/ 11 февраля 2009

Я новичок в LINQ. Я просто перетащил все свои таблицы базы данных в конструктор в виде LINQ to SQL. Все мои отношения правильные и выглядят красиво в дизайнере. Я могу получить данные, используя простой код LINQ. Я хочу добавить свои собственные методы сейчас, но не хочу сдавать свои изменения, если (когда) мне нужно восстановить мой dbml. Я предполагаю, что я просто создаю новый файл классов и устанавливаю частичные классы сгенерированных классов. Это правильно? Например, у меня есть сгенерированный класс с именем SystemUser , который содержит столбцы SystemUserId, имя пользователя, пароль, PersonId, SecurityQuestionId, SecurityQuestionResponse . Я хочу добавить метод с именем void Authenticate () и новое свойство с именем bool Authenticated . В основном я хочу передать имя пользователя и пароль для Authenticate () и установить свойство Authenticated на основе поиска подходящего пользователя, и т.д. Где и как мне это сделать?

Ответы [ 3 ]

13 голосов
/ 11 февраля 2009

Сгенерированные LINQ классы являются частичными, то есть вы можете расширить их, создав собственные частичные классы или частичные методы .

В вашем случае вы можете создать частичный класс для своего SystemUser, а затем добавить туда свой метод (ы). Они не будут перезаписаны при восстановлении файла DBML.

Что-то вроде:

public partial class SystemUser
{
    public bool Authenticated { get; set; }

    void Authenticate()
    {
        //Perform custom logic here.
    }
}
2 голосов
/ 11 февраля 2009

Взгляните на использование Частичного класса ... он может очень хорошо соответствовать вашей ситуации.

1 голос
/ 11 февраля 2009

Если вы просто хотите, чтобы у вашего класса был новый метод, вы правильно создали новый файл и используете частичный класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...