BLToolkit против стиля отображения Linq2SQL - PullRequest
0 голосов
/ 01 сентября 2011

До сих пор я в основном писал сопоставления определений столбцов таблицы, чтобы они выглядели как стиль Linq2SQL.

например, Linq2SQL

private Nullable<int> _MyColumn;
[Column( Name = "MyColumn", Storage = "_MyColumn", DbType = "int", CanBeNull = true )]
public Nullable<int> MyColumn { get { return _MyColumn; } set { _MyColumn= value; } }

BLToolkit

private Nullable<int> _MyColumn;
[MapField( "MyColumn", Storage = "_MyColumn" )]
public Nullable<int> MyColumn { get { return _MyColumn; } set { _MyColumn= value; } }

Думаю, это не проблема, просто сейчас я не знаю, нужны ли все эти атрибуты для BLToolkit. Нужно ли вводить элемент _MyValue или атрибут Хранилище ?

Большинство примеров на вики-сайте BLToolkit просто используют следующий стиль для определения столбцов таблицы

[MapField( "MyColumn" )]
public Nullable<int> MyColumn { get; set; }

Итак, мой вопрос. Нужно ли использовать приватный сеттер в BLToolkit?

Есть ли проблемы с производительностью или без нее?

1 Ответ

0 голосов
/ 01 сентября 2011

LINQ to SQL использует частное поле поддержки, чтобы разрешить реализации IPropertyNotifyChanging / INotifyPropertyChanged вместе с частичными методами, чтобы вы могли добавить свою собственную пользовательскую логику, привязку данных и контекст, чтобы отслеживать изменения свойств для процесса обновления , Вы не получите их при использовании автоматически реализованных свойств. При использовании autoprops во время выполнения улучшений не происходит, поскольку они являются просто синтаксическим сахаром по сравнению с «анонимным» частным вспомогательным полем, которое генерирует для вас компилятор.

Что касается атрибута Хранилище, то в LINQ to SQL он используется для прямой установки частного поля поддержки в чтениях базы данных, чтобы обойти события уведомления свойства. Например, если у вас есть перехватчик, чтобы наблюдать, когда INotifyPropertyChanged.PropertyChanged поднимается и помечать ваш объект как грязный, если вы используете установщики открытых свойств при извлечении объекта, он будет помечен как грязный, но если вы используете хранилище для указания в частном поле, он не будет помечен как грязный.

Все вышеперечисленное относится к LINQ to SQL и может относиться или не относиться к BLTooklit, поскольку я не знаком с этим.

...