打開DataClasses1. Designer.cs 文件,你就可以看到OR Designer給你產生的映射代碼了。
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Data;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using System.ComponentModel;
using System;
[System.Data.Linq.Mapping.DatabaseAttribute(Name="northwind_may06ctp")]
public partial class DataClasses1DataContext : System.Data.Linq.DataContext
…{
private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
Extensibility Method Definitions#region Extensibility Method Definitions
partial void OnCreated();
partial void InsertOrder(Order instance);
partial void UpdateOrder(Order instance);
partial void DeleteOrder(Order instance);
partial void InsertOrder_Detail(Order_Detail instance);
partial void UpdateOrder_Detail(Order_Detail instance);
partial void DeleteOrder_Detail(Order_Detail instance);
#endregion
static DataClasses1DataContext()
…{
}
public DataClasses1DataContext(string connection) :
base(connection, mappingSource)
…{
OnCreated();
}
public DataClasses1DataContext(System.Data.IDbConnection connection) :
base(connection, mappingSource)
…{
OnCreated();
}
public DataClasses1DataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) :
base(connection, mappingSource)
…{
OnCreated();
}
public DataClasses1DataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) :
base(connection, mappingSource)
…{
OnCreated();
}
public DataClasses1DataContext() :
base(global::SqlMetalUtil.Properties.Settings.Default.northwind_may06ctpConnectionString, mappingSource)
…{
OnCreated();
}
public System.Data.Linq.Table<Order> Orders
…{
get
…{
return this.GetTable<Order>();
}
}
public System.Data.Linq.Table<Order_Detail> Order_Details
…{
get
…{
return this.GetTable<Order_Detail>();
}
}
[Function(Name="dbo.CategoriesInsert")]
public int CategoriesInsert([Parameter(Name="@CategoryID", DbType="int")] System.Nullable<int> CategoryID, [Parameter(Name="@CategoryName", DbType="nvarchar")] string CategoryName, [Parameter(Name="@Description", DbType="ntext")] string Description, [Parameter(Name="@Picture", DbType="image")] byte[] Picture)
…{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), CategoryID, CategoryName, Description, Picture);
return ((int)(result.ReturnValue));
}
}
[Table(Name="dbo.Orders")]
public partial class Order : INotifyPropertyChanging, INotifyPropertyChanged
…{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private int _OrderID;
private string _CustomerID;
private System.Nullable<int> _EmployeeID;
private System.Nullable<System.DateTime> _OrderDate;
private System.Nullable<System.DateTime> _RequiredDate;
private System.Nullable<System.DateTime> _ShippedDate;
private System.Nullable<int> _ShipVia;
private System.Nullable<decimal> _Freight;
private string _ShipName;
private string _ShipAddress;
private string _ShipCity;
private string _ShipRegion;
private string _ShipPostalCode;
private string _ShipCountry;
private EntitySet<Order_Detail> _Order_Details;
Extensibility Method Definitions#region Extensibility Method Definitions
partial void OnLoaded();
partial void OnValidate();
partial void OnCreated();
partial void OnOrderIDChanging(int value);
partial void OnOrderIDChanged();
partial void OnCustomerIDChanging(string value);
partial void OnCustomerIDChanged();
partial void OnEmployeeIDChanging(System.Nullable<int> value);
partial void OnEmployeeIDChanged();
partial void OnOrderDateChanging(System.Nullable<System.DateTime> value);
partial void OnOrderDateChanged();
partial void OnRequiredDateChanging(System.Nullable<System.DateTime> value);
partial void OnRequiredDateChanged();
partial void OnShippedDateChanging(System.Nullable<System.DateTime> value);
partial void OnShippedDateChanged();
partial void OnShipViaChanging(System.Nullable<int> value);
partial void OnShipViaChanged();
partial void OnFreightChanging(System.Nullable<decimal> value);
partial void OnFreightChanged();
partial void OnShipNameChanging(string value);
partial void OnShipNameChanged();
partial void OnShipAddressChanging(string value);
partial void OnShipAddressChanged();
partial void OnShipCityChanging(string value);
partial void OnShipCityChanged();
partial void OnShipRegionChanging(string value);
partial void OnShipRegionChanged();
partial void OnShipPostalCodeChanging(string value);
partial void OnShipPostalCodeChanged();
partial void OnShipCountryChanging(string value);
partial void OnShipCountryChanged();
#endregion
public Order()
…{
OnCreated();
this._Order_Details = new EntitySet<Order_Detail>(new Action<Order_Detail>(this.attach_Order_Details), new Action<Order_Detail>(this.detach_Order_Details));
}
[Column(Storage="_OrderID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
public int OrderID
…{
get
…{
return this._OrderID;
}
set
…{
if ((this._OrderID != value))
…{
this.OnOrderIDChanging(value);
this.SendPropertyChanging();
this._OrderID = value;
this.SendPropertyChanged("OrderID");
this.OnOrderIDChanged();
}
}
}
[Column(Storage="_CustomerID", DbType="NChar(5)")]
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="_EmployeeID", DbType="Int")]
public System.Nullable<int> EmployeeID
…{
get
…{
return this._EmployeeID;
}
set
…{
if ((this._EmployeeID != value))
…{
this.OnEmployeeIDChanging(value);
this.SendPropertyChanging();
this._EmployeeID = value;
this.SendPropertyChanged("EmployeeID");
this.OnEmployeeIDChanged();
}
}
}
[Column(Storage="_OrderDate", DbType="DateTime")]
public System.Nullable<System.DateTime> OrderDate
…{
get
…{
return this._OrderDate;
}
set
…{
if ((this._OrderDate != value))
…{
this.OnOrderDateChanging(value);
this.SendPropertyChanging();
this._OrderDate = value;
this.SendPropertyChanged("OrderDate");
this.OnOrderDateChanged();
}
}
}
[Column(Storage="_RequiredDate", DbType="DateTime")]
public System.Nullable<System.DateTime> RequiredDate
…{
get
…{
return this._RequiredDate;
}
set
…{
if ((this._RequiredDate != value))
…{
this.OnRequiredDateChanging(value);
this.SendPropertyChanging();
this._RequiredDate = value;
this.SendPropertyChanged("RequiredDate");
this.OnRequiredDateChanged();
}
}
}
[Column(Storage="_ShippedDate", DbType="DateTime")]
public System.Nullable<System.DateTime> ShippedDate
…{
get
…{
return this._ShippedDate;
}
set
…{
if ((this._ShippedDate != value))
…{
this.OnShippedDateChanging(value);
this.SendPropertyChanging();
this._ShippedDate = value;
this.SendPropertyChanged("ShippedDate");
this.OnShippedDateChanged();
}
}
}
[Column(Storage="_ShipVia", DbType="Int")]
public System.Nullable<int> ShipVia
…{
get
…{
return this._ShipVia;
}
set
…{
if ((this._ShipVia != value))
…{
this.OnShipViaChanging(value);
this.SendPropertyChanging();
this._ShipVia = value;
this.SendPropertyChanged("ShipVia");
this.OnShipViaChanged();
}
}
}
[Column(Storage="_Freight", DbType="Money")]
public System.Nullable<decimal> Freight
…{
get
…{
return this._Freight;
}
set
…{
if ((this._Freight != value))
…{
this.OnFreightChanging(value);
this.SendPropertyChanging();
this._Freight = value;
this.SendPropertyChanged("Freight");
this.OnFreightChanged();
}
}
}
[Column(Storage="_ShipName", DbType="NVarChar(40)")]
public string ShipName
…{
get
…{
return this._ShipName;
}
set
…{
if ((this._ShipName != value))
…{
this.OnShipNameChanging(value);
this.SendPropertyChanging();
this._ShipName = value;
this.SendPropertyChanged("ShipName");
this.OnShipNameChanged();
}
}
}
[Column(Storage="_ShipAddress", DbType="NVarChar(60)")]
public string ShipAddress
…{
get
…{
return this._ShipAddress;
}
set
…{
if ((this._ShipAddress != value))
…{
this.OnShipAddressChanging(value);
this.SendPropertyChanging();
this._ShipAddress = value;
this.SendPropertyChanged("ShipAddress");
this.OnShipAddressChanged();
}
}
}
[Column(Storage="_ShipCity", DbType="NVarChar(15)")]
public string ShipCity
…{
get
…{
return this._ShipCity;
}
set
…{
if ((this._ShipCity != value))
…{
this.OnShipCityChanging(value);
this.SendPropertyChanging();
this._ShipCity = value;
this.SendPropertyChanged("ShipCity");
this.OnShipCityChanged();
}
}
}
[Column(Storage="_ShipRegion", DbType="NVarChar(15)")]
public string ShipRegion
…{
get
…{
return this._ShipRegion;
}
set
…{
if ((this._ShipRegion != value))
…{
this.OnShipRegionChanging(value);
this.SendPropertyChanging();
this._ShipRegion = value;
this.SendPropertyChanged("ShipRegion");
this.OnShipRegionChanged();
}
}
}
[Column(Storage="_ShipPostalCode", DbType="NVarChar(10)")]
public string ShipPostalCode
…{
get
…{
return this._ShipPostalCode;
}
set
…{
if ((this._ShipPostalCode != value))
…{
this.OnShipPostalCodeChanging(value);
this.SendPropertyChanging();
this._ShipPostalCode = value;
this.SendPropertyChanged("ShipPostalCode");
this.OnShipPostalCodeChanged();
}
}
}
[Column(Storage="_ShipCountry", DbType="NVarChar(15)")]
public string ShipCountry
…{
get
…{
return this._ShipCountry;
}
set
…{
if ((this._ShipCountry != value))
…{
this.OnShipCountryChanging(value);
this.SendPropertyChanging();
this._ShipCountry = value;
this.SendPropertyChanged("ShipCountry");
this.OnShipCountryChanged();
}
}
}
[Association(Name="Order_Order_Detail", Storage="_Order_Details", OtherKey="OrderID")]
public EntitySet<Order_Detail> Order_Details
…{
get
…{
return this._Order_Details;
}
set
…{
this._Order_Details.Assign(value);
}
}
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));
}
}
private void attach_Order_Details(Order_Detail entity)
…{
this.SendPropertyChanging();
entity.Order = this;
this.SendPropertyChanged("Order_Details");
}
private void detach_Order_Details(Order_Detail entity)
…{
this.SendPropertyChanging();
entity.Order = null;
this.SendPropertyChanged("Order_Details");
}
}
[Table(Name="dbo.[Order Details]")]
public partial class Order_Detail : INotifyPropertyChanging, INotifyPropertyChanged
…{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private int _OrderID;
private int _ProductID;
private decimal _UnitPrice;
private short _Quantity;
private float _Discount;
private EntityRef<Order> _Order;
Extensibility Method Definitions#region Extensibility Method Definitions
partial void OnLoaded();
partial void OnValidate();
partial void OnCreated();
partial void OnOrderIDChanging(int value);
partial void OnOrderIDChanged();
partial void OnProductIDChanging(int value);
partial void OnProductIDChanged();
partial void OnUnitPriceChanging(decimal value);
partial void OnUnitPriceChanged();
partial void OnQuantityChanging(short value);
partial void OnQuantityChanged();
partial void OnDiscountChanging(float value);
partial void OnDiscountChanged();
#endregion
public Order_Detail()
…{
OnCreated();
this._Order = default(EntityRef<Order>);
}
[Column(Storage="_OrderID", DbType="Int NOT NULL", IsPrimaryKey=true)]
public int OrderID
…{
get
…{
return this._OrderID;
}
set
…{
if ((this._OrderID != value))
…{
if (this._Order.HasLoadedOrAssignedValue)
…{
throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
}
this.OnOrderIDChanging(value);
this.SendPropertyChanging();
this._OrderID = value;
this.SendPropertyChanged("OrderID");
this.OnOrderIDChanged();
}
}
}
[Column(Storage="_ProductID", DbType="Int NOT NULL", IsPrimaryKey=true)]
public int ProductID
…{
get
…{
return this._ProductID;
}
set
…{
if ((this._ProductID != value))
…{
this.OnProductIDChanging(value);
this.SendPropertyChanging();
this._ProductID = value;
this.SendPropertyChanged("ProductID");
this.OnProductIDChanged();
}
}
}
[Column(Storage="_UnitPrice", DbType="Money NOT NULL")]
public decimal UnitPrice
…{
get
…{
return this._UnitPrice;
}
set
…{
if ((this._UnitPrice != value))
…{
this.OnUnitPriceChanging(value);
this.SendPropertyChanging();
this._UnitPrice = value;
this.SendPropertyChanged("UnitPrice");
this.OnUnitPriceChanged();
}
}
}
[Column(Storage="_Quantity", DbType="SmallInt NOT NULL")]
public short Quantity
…{
get
…{
return this._Quantity;
}
set
…{
if ((this._Quantity != value))
…{
this.OnQuantityChanging(value);
this.SendPropertyChanging();
this._Quantity = value;
this.SendPropertyChanged("Quantity");
this.OnQuantityChanged();
}
}
}
[Column(Storage="_Discount", DbType="Real NOT NULL")]
public float Discount
…{
get
…{
return this._Discount;
}
set
…{
if ((this._Discount != value))
…{
this.OnDiscountChanging(value);
this.SendPropertyChanging();
this._Discount = value;
this.SendPropertyChanged("Discount");
this.OnDiscountChanged();
}
}
}
[Association(Name="Order_Order_Detail", Storage="_Order", ThisKey="OrderID", IsForeignKey=true)]
public Order Order
…{
get
…{
return this._Order.Entity;
}
set
…{
Order previousValue = this._Order.Entity;
if (((previousValue != value)
|| (this._Order.HasLoadedOrAssignedValue == false)))
…{
this.SendPropertyChanging();
if ((previousValue != null))
…{
this._Order.Entity = null;
previousValue.Order_Details.Remove(this);
}
this._Order.Entity = value;
if ((value != null))
…{
value.Order_Details.Add(this);
this._OrderID = value.OrderID;
}
else
…{
this._OrderID = default(int);
}
this.SendPropertyChanged("Order");
}
}
}
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));
}
}
}
本節介紹了O/R Designer的基本用法,下節講一些比較高級的用法。O/R Designer相對與sqlmetal的好處就可以設計類的繼承關系(下節再講),而sqlmetal 相對於O/R Designer是可以一次性抽提所有表的信息,快速便捷。而且sqlmetal支持一些O/R Designer無法支持的信息提取。