除了自己建立定制对象外,还可以使用O/R设计器以可视化的方式创建数据对象和关系。
双击DBML文件打开OR设计器,从工具栏拖动一个类进来,改名为Customers并右键->添加属性,设置CustomerID属性为主键,设置源属性为数据库中的dbo.Customers表,注意这里加上了dbo。
结果如下:
这时候可以打开
dbml.layout文件和designer.cs 文件查看结果发现多了下面的内容
[Table(Name="dbo.Customers")] public partial class Customers : INotifyPropertyChanging, INotifyPropertyChanged { private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); private string _CompanyName; private string _CustomerID; private string _Country; #region Extensibility Method Definitions partial void OnLoaded(); partial void OnValidate(System.Data.Linq.ChangeAction action); partial void OnCreated(); partial void OnCompanyNameChanging(string value); partial void OnCompanyNameChanged(); partial void OnCustomerIDChanging(string value); partial void OnCustomerIDChanged(); partial void OnCountryChanging(string value); partial void OnCountryChanged(); #endregion public Customers() { OnCreated(); } [Column(Storage="_CompanyName", CanBeNull=false)] public string CompanyName { get { return this._CompanyName; } set { if ((this._CompanyName != value)) { this.OnCompanyNameChanging(value); this.SendPropertyChanging(); this._CompanyName = value; this.SendPropertyChanged("CompanyName"); this.OnCompanyNameChanged(); } } } [Column(Storage="_CustomerID", CanBeNull=false, IsPrimaryKey=true)] public string CustomerID { get { return this._CustomerID; } set { if ((this._CustomerID != value)) { this.OnCustomerIDChanging(value); this.SendPropertyChanging(); this._CustomerID = value; this.SendPropertyChanged("CustomerID"); this.OnCustomerIDChanged(); } } } [Column(Storage="_Country", CanBeNull=false)] public string Country { get { return this._Country; } set { if ((this._Country != value)) { this.OnCountryChanging(value); this.SendPropertyChanging(); this._Country = value; this.SendPropertyChanged("Country"); this.OnCountryChanged(); } } } public event PropertyChangingEventHandler PropertyChanging; public event PropertyChangedEventHandler PropertyChanged; protected virtual void SendPropertyChanging() { if ((this.PropertyChanging != null)) { this.PropertyChanging(this, emptyChangingEventArgs); } } protected virtual void SendPropertyChanged(String propertyName) { if ((this.PropertyChanged != null)) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } }
dbml.layout文件 是用于帮助OR设计器进行可视化表示的XML
designer.cs文件 是定义了所有数据类的文件
冯瑞涛