Классы Linq2SQL: частичные классы , что означает, что вы можете легко расширить их, добавив свой отдельный файл и объявив в нем другую часть частичного класса.
В этом файле вы можете настроить класс по мере необходимости - и поскольку это отдельный файл, генерация кода не будет перезаписывать его.
Если вы посмотрите, например, на класс «Контакт» в базе данных AdventureWorks, Linq2SQL сгенерирует это в вашем файле AdventureWorks.designer.cs:
[Table(Name="Person.Contact")]
public partial class Contact : INotifyPropertyChanging, INotifyPropertyChanged
{
Теперь вы можете добавить файл «Contact.cs» в ваш проект и расширить этот частичный класс, например, введя новое свойство "DisplayName":
public partial class Contact
{
public string DisplayName
{
get { return string.Format("{0} {1}", FirstName, LastName); }
}
}
Во время компиляции эти две части класса объединяются вместе.
Другая часть - это частичные методы - методы, которые вы можете реализовать, но если они не реализованы, вызовы к ним оптимизируются компилятором.
Для каждого класса объектов в Linq2SQL создается целый ряд частичных методов (новая функция в .NET 3.0) - до вас, чтобы реализовать их!
partial void InsertContact(Contact instance);
partial void UpdateContact(Contact instance);
partial void DeleteContact(Contact instance);
partial void OnLoaded();
partial void OnValidate(System.Data.Linq.ChangeAction action);
partial void OnCreated();
partial void OnFirstNameChanging(string value);
partial void OnFirstNameChanged();
partial void OnLastNameChanging(string value);
partial void OnLastNameChanged();
Множество точек расширения!
Марк