2008-09-17 5 views
9

Если у меня есть таблица в моей базе данных под названием «Пользователи», будет создан класс, созданный LINQtoSQL под названием «Пользователь» с уже объявленным пустым конструктором.Есть ли способ переопределить пустой конструктор в классе, сгенерированном LINQtoSQL?

Какова наилучшая практика, если я хочу переопределить этот конструктор и добавить к нему свою собственную логику?

ответ

11

по умолчанию Конструктор, который порождается O/R-конструктор, называет частичная функция называется OnCreate - так лучшая практика не переопределить конструктор по умолчанию, но вместо того, чтобы осуществить частичную функцию OnCreated в MyDataClasses.cs инициализировать элементы:

partial void OnCreated() 
{ 
    Name = ""; 
} 

Если вы реализуете другие конструкторы, всегда будьте осторожны, чтобы вызвать конструктор по умолчанию, чтобы классы были инициализированы правильно - например, сущности (отношения) построены в конструкторе по умолчанию.

3

Не похоже, что вы можете переопределить пустой конструктор. Вместо этого я бы создал метод, который выполняет необходимые функции в пустом конструкторе и возвращает новый объект.

// Add new partial class to extend functionality 
public partial class User { 

    // Add additional constructor 
    public User(int id) { 
    ID = id; 
    } 

    // Add static method to initialize new object 
    public User GetNewUser() { 
    // functionality 
    User user = new User(); 
    user.Name = "NewName"; 
    return user; 
    } 
} 

Затем в другом месте в коде, вместо того, чтобы использовать пустой конструктор по умолчанию, выполните одно из следующих действий:

User user1 = new User(1); 
User user2 = User.GetNewUser(); 
1

Настройка свойства DataContext Connection для «None» работала для меня. Шаги ниже.

Открыть dbml -> Right Click Properties -> Обновить подключение в свойствах DataContext до «None». Это приведет к удалению пустого конструктора из сгенерированного файла кода. -> Создать новый неполный класс для DataContext с пустым конструктором, как показано ниже

Partial Class MyDataContext  
    Public Sub New()    
     MyBase.New(ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString, mappingSource) 
     OnCreated()  
    End Sub  
End Class 
Смежные вопросы