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





Не похоже, что вы можете переопределить пустой конструктор. Вместо этого я бы создал метод, который выполняет необходимые функции в пустом конструкторе и возвращает новый объект.
// 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();
Конструктор по умолчанию, который создается O / R-Designer, вызывает частичную функцию с именем OnCreated, поэтому рекомендуется не переопределять конструктор по умолчанию, а вместо этого реализовать частичную функцию OnCreated в MyDataClasses.cs для инициализации элементов:
partial void OnCreated()
{
Name = "";
}
Если вы реализуете другие конструкторы, всегда вызывайте конструктор по умолчанию, чтобы классы были инициализированы должным образом - например, наборы сущностей (отношения) создаются в конструкторе по умолчанию.
Установка для свойства DataContext Connection значения «None» сработала для меня. Шаги ниже.
Откройте dbml -> Щелкните правой кнопкой мыши Свойства -> Обновите соединение в свойствах DataContext до «Нет». Это удалит пустой конструктор из сгенерированного файла кода. -> Создайте новый частичный класс для DataContext с пустым конструктором, как показано ниже
Partial Class MyDataContext
Public Sub New()
MyBase.New(ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString, mappingSource)
OnCreated()
End Sub
End Class
Вот версия C#:
public partial class PENCILS_LinqToSql_DataClassesDataContext
{
public PENCILS_LinqToSql_DataClassesDataContext() : base(ConnectionString(), mappingSource)
{
}
public static String ConnectionString()
{
String CS;
String Key;
Key = System.Configuration.ConfigurationManager.AppSettings["DefaultConnectionString"].ToString();
/// Get the actual connection string.
CS = System.Configuration.ConfigurationManager.ConnectionStrings[Key].ToString();
return CS;
}
}