BLToolkit vs Linq2SQL映射样式

时间:2011-09-01 11:17:33

标签: linq mapping bltoolkit

到目前为止,我主要是编写表列定义映射,因此它们看起来与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 wiki站点上的大多数示例只使用以下样式来定义表列

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

所以我的问题是。我是否需要在BLToolkit中使用私有设置器?

是否存在任何性能问题?

1 个答案:

答案 0 :(得分:0)

LINQ to SQL使用私有支持字段来允许IPropertyNotifyChanging / INotifyPropertyChanged实现以及部分方法,以允许您添加自己的自定义逻辑,数据绑定以及上下文以监视更新过程的属性更改。使用自动实现的属性时,您不会获得这些。在运行时使用autoprops没有性能提升,因为它们只是编译器为您生成的“匿名”私有后备字段的语法糖。

对于Storage属性,在LINQ to SQL中,它用于直接在数据库读取上设置私有后备字段以绕过属性通知事件。例如,如果在引发INotifyPropertyChanged.PropertyChanged时有一个要监视的拦截器并将对象标记为脏,如果在获取对象时使用公共属性设置器,它将被标记为脏,但如果使用存储指向在私人领域,它不会被标记为脏。

以上所有内容都特定于LINQ to SQL,可能适用于BLTooklit,也可能不适用,因为我对此并不熟悉。