zoukankan      html  css  js  c++  java
  • LINQ to SQL自定义映射表关系(1:N or 1:1)

    以Northwind库为例,新建LINQ TO SQL Classes,我们将表Suppliers和Products拖进新建的dbml文件设计界面。

       默认情况下,IDE自动生成的映射关系为1:N.即Cardinality属性为OneToMany即1:N。

    如果我们想改为1:1则可选中表关系(图中空心实心箭头),修改Cardinality属性为OneToOne。

    但是IDE会报错:Error 1 Cannot create an association "Supplier_Product". Properties do not have matching types: "SupplierID", "SupplierID".  

    这个错误说明主表主键和从表的外键字段类型不一致,检查发现果然是Products表的外键字段SupplierID为可空类型而主表Suppliers的主键字段为不可空类型。

    修改dbml中Products表的SupplierID的Nullable属性为False,然后修改Cardinality属性为OneToOne,成功!

    1:N的自动生成映射类:

       using System.Data.Linq;
        using System.Data.Linq.Mapping;
        using System.Data;
        using System.Collections.Generic;
        using System.Reflection;
        using System.Linq;
        using System.Linq.Expressions;
        using System.ComponentModel;
        using System;
    
    
        [System.Data.Linq.Mapping.DatabaseAttribute(Name = "Northwind")]
        public partial class DataClasses1DataContext : System.Data.Linq.DataContext
        {
    
            private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
    
            #region Extensibility Method Definitions
            partial void OnCreated();
            partial void InsertProduct(Product instance);
            partial void UpdateProduct(Product instance);
            partial void DeleteProduct(Product instance);
            partial void InsertSupplier(Supplier instance);
            partial void UpdateSupplier(Supplier instance);
            partial void DeleteSupplier(Supplier instance);
            #endregion
    
            public DataClasses1DataContext() :
                base(global::System.Configuration.ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString, mappingSource)
            {
                OnCreated();
            }
    
            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 System.Data.Linq.Table<Product> Products
            {
                get
                {
                    return this.GetTable<Product>();
                }
            }
    
            public System.Data.Linq.Table<Supplier> Suppliers
            {
                get
                {
                    return this.GetTable<Supplier>();
                }
            }
        }
    
        [Table(Name = "dbo.Products")]
        public partial class Product : INotifyPropertyChanging, INotifyPropertyChanged
        {
    
            private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
    
            private int _ProductID;
    
            private string _ProductName;
    
            private System.Nullable<int> _SupplierID;
    
            private System.Nullable<int> _CategoryID;
    
            private string _QuantityPerUnit;
    
            private System.Nullable<decimal> _UnitPrice;
    
            private System.Nullable<short> _UnitsInStock;
    
            private System.Nullable<short> _UnitsOnOrder;
    
            private System.Nullable<short> _ReorderLevel;
    
            private bool _Discontinued;
    
            private EntityRef<Supplier> _Supplier;
    
            #region Extensibility Method Definitions
            partial void OnLoaded();
            partial void OnValidate(System.Data.Linq.ChangeAction action);
            partial void OnCreated();
            partial void OnProductIDChanging(int value);
            partial void OnProductIDChanged();
            partial void OnProductNameChanging(string value);
            partial void OnProductNameChanged();
            partial void OnSupplierIDChanging(System.Nullable<int> value);
            partial void OnSupplierIDChanged();
            partial void OnCategoryIDChanging(System.Nullable<int> value);
            partial void OnCategoryIDChanged();
            partial void OnQuantityPerUnitChanging(string value);
            partial void OnQuantityPerUnitChanged();
            partial void OnUnitPriceChanging(System.Nullable<decimal> value);
            partial void OnUnitPriceChanged();
            partial void OnUnitsInStockChanging(System.Nullable<short> value);
            partial void OnUnitsInStockChanged();
            partial void OnUnitsOnOrderChanging(System.Nullable<short> value);
            partial void OnUnitsOnOrderChanged();
            partial void OnReorderLevelChanging(System.Nullable<short> value);
            partial void OnReorderLevelChanged();
            partial void OnDiscontinuedChanging(bool value);
            partial void OnDiscontinuedChanged();
            #endregion
    
            public Product()
            {
                this._Supplier = default(EntityRef<Supplier>);
                OnCreated();
            }
    
            [Column(Storage = "_ProductID", AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = 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 = "_ProductName", DbType = "NVarChar(40) NOT NULL", CanBeNull = false)]
            public string ProductName
            {
                get
                {
                    return this._ProductName;
                }
                set
                {
                    if ((this._ProductName != value))
                    {
                        this.OnProductNameChanging(value);
                        this.SendPropertyChanging();
                        this._ProductName = value;
                        this.SendPropertyChanged("ProductName");
                        this.OnProductNameChanged();
                    }
                }
            }
    
            [Column(Storage = "_SupplierID", DbType = "Int")]
            public System.Nullable<int> SupplierID
            {
                get
                {
                    return this._SupplierID;
                }
                set
                {
                    if ((this._SupplierID != value))
                    {
                        if (this._Supplier.HasLoadedOrAssignedValue)
                        {
                            throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
                        }
                        this.OnSupplierIDChanging(value);
                        this.SendPropertyChanging();
                        this._SupplierID = value;
                        this.SendPropertyChanged("SupplierID");
                        this.OnSupplierIDChanged();
                    }
                }
            }
    
            [Column(Storage = "_CategoryID", DbType = "Int")]
            public System.Nullable<int> CategoryID
            {
                get
                {
                    return this._CategoryID;
                }
                set
                {
                    if ((this._CategoryID != value))
                    {
                        this.OnCategoryIDChanging(value);
                        this.SendPropertyChanging();
                        this._CategoryID = value;
                        this.SendPropertyChanged("CategoryID");
                        this.OnCategoryIDChanged();
                    }
                }
            }
    
            [Column(Storage = "_QuantityPerUnit", DbType = "NVarChar(20)")]
            public string QuantityPerUnit
            {
                get
                {
                    return this._QuantityPerUnit;
                }
                set
                {
                    if ((this._QuantityPerUnit != value))
                    {
                        this.OnQuantityPerUnitChanging(value);
                        this.SendPropertyChanging();
                        this._QuantityPerUnit = value;
                        this.SendPropertyChanged("QuantityPerUnit");
                        this.OnQuantityPerUnitChanged();
                    }
                }
            }
    
            [Column(Storage = "_UnitPrice", DbType = "Money")]
            public System.Nullable<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 = "_UnitsInStock", DbType = "SmallInt")]
            public System.Nullable<short> UnitsInStock
            {
                get
                {
                    return this._UnitsInStock;
                }
                set
                {
                    if ((this._UnitsInStock != value))
                    {
                        this.OnUnitsInStockChanging(value);
                        this.SendPropertyChanging();
                        this._UnitsInStock = value;
                        this.SendPropertyChanged("UnitsInStock");
                        this.OnUnitsInStockChanged();
                    }
                }
            }
    
            [Column(Storage = "_UnitsOnOrder", DbType = "SmallInt")]
            public System.Nullable<short> UnitsOnOrder
            {
                get
                {
                    return this._UnitsOnOrder;
                }
                set
                {
                    if ((this._UnitsOnOrder != value))
                    {
                        this.OnUnitsOnOrderChanging(value);
                        this.SendPropertyChanging();
                        this._UnitsOnOrder = value;
                        this.SendPropertyChanged("UnitsOnOrder");
                        this.OnUnitsOnOrderChanged();
                    }
                }
            }
    
            [Column(Storage = "_ReorderLevel", DbType = "SmallInt")]
            public System.Nullable<short> ReorderLevel
            {
                get
                {
                    return this._ReorderLevel;
                }
                set
                {
                    if ((this._ReorderLevel != value))
                    {
                        this.OnReorderLevelChanging(value);
                        this.SendPropertyChanging();
                        this._ReorderLevel = value;
                        this.SendPropertyChanged("ReorderLevel");
                        this.OnReorderLevelChanged();
                    }
                }
            }
    
            [Column(Storage = "_Discontinued", DbType = "Bit NOT NULL")]
            public bool Discontinued
            {
                get
                {
                    return this._Discontinued;
                }
                set
                {
                    if ((this._Discontinued != value))
                    {
                        this.OnDiscontinuedChanging(value);
                        this.SendPropertyChanging();
                        this._Discontinued = value;
                        this.SendPropertyChanged("Discontinued");
                        this.OnDiscontinuedChanged();
                    }
                }
            }
    
            [Association(Name = "Supplier_Product", Storage = "_Supplier", ThisKey = "SupplierID", OtherKey = "SupplierID", IsForeignKey = true)]
            public Supplier Supplier
            {
                get
                {
                    return this._Supplier.Entity;
                }
                set
                {
                    Supplier previousValue = this._Supplier.Entity;
                    if (((previousValue != value)
                                || (this._Supplier.HasLoadedOrAssignedValue == false)))
                    {
                        this.SendPropertyChanging();
                        if ((previousValue != null))
                        {
                            this._Supplier.Entity = null;
                            previousValue.Products.Remove(this);
                        }
                        this._Supplier.Entity = value;
                        if ((value != null))
                        {
                            value.Products.Add(this);
                            this._SupplierID = value.SupplierID;
                        }
                        else
                        {
                            this._SupplierID = default(Nullable<int>);
                        }
                        this.SendPropertyChanged("Supplier");
                    }
                }
            }
    
            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));
                }
            }
        }
    
        [Table(Name = "dbo.Suppliers")]
        public partial class Supplier : INotifyPropertyChanging, INotifyPropertyChanged
        {
    
            private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
    
            private int _SupplierID;
    
            private string _CompanyName;
    
            private string _ContactName;
    
            private string _ContactTitle;
    
            private string _Address;
    
            private string _City;
    
            private string _Region;
    
            private string _PostalCode;
    
            private string _Country;
    
            private string _Phone;
    
            private string _Fax;
    
            private string _HomePage;
    
            private EntitySet<Product> _Products;
    
            #region Extensibility Method Definitions
            partial void OnLoaded();
            partial void OnValidate(System.Data.Linq.ChangeAction action);
            partial void OnCreated();
            partial void OnSupplierIDChanging(int value);
            partial void OnSupplierIDChanged();
            partial void OnCompanyNameChanging(string value);
            partial void OnCompanyNameChanged();
            partial void OnContactNameChanging(string value);
            partial void OnContactNameChanged();
            partial void OnContactTitleChanging(string value);
            partial void OnContactTitleChanged();
            partial void OnAddressChanging(string value);
            partial void OnAddressChanged();
            partial void OnCityChanging(string value);
            partial void OnCityChanged();
            partial void OnRegionChanging(string value);
            partial void OnRegionChanged();
            partial void OnPostalCodeChanging(string value);
            partial void OnPostalCodeChanged();
            partial void OnCountryChanging(string value);
            partial void OnCountryChanged();
            partial void OnPhoneChanging(string value);
            partial void OnPhoneChanged();
            partial void OnFaxChanging(string value);
            partial void OnFaxChanged();
            partial void OnHomePageChanging(string value);
            partial void OnHomePageChanged();
            #endregion
    
            public Supplier()
            {
                this._Products = new EntitySet<Product>(new Action<Product>(this.attach_Products), new Action<Product>(this.detach_Products));
                OnCreated();
            }
    
            [Column(Storage = "_SupplierID", AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
            public int SupplierID
            {
                get
                {
                    return this._SupplierID;
                }
                set
                {
                    if ((this._SupplierID != value))
                    {
                        this.OnSupplierIDChanging(value);
                        this.SendPropertyChanging();
                        this._SupplierID = value;
                        this.SendPropertyChanged("SupplierID");
                        this.OnSupplierIDChanged();
                    }
                }
            }
    
            [Column(Storage = "_CompanyName", DbType = "NVarChar(40) NOT NULL", 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 = "_ContactName", DbType = "NVarChar(30)")]
            public string ContactName
            {
                get
                {
                    return this._ContactName;
                }
                set
                {
                    if ((this._ContactName != value))
                    {
                        this.OnContactNameChanging(value);
                        this.SendPropertyChanging();
                        this._ContactName = value;
                        this.SendPropertyChanged("ContactName");
                        this.OnContactNameChanged();
                    }
                }
            }
    
            [Column(Storage = "_ContactTitle", DbType = "NVarChar(30)")]
            public string ContactTitle
            {
                get
                {
                    return this._ContactTitle;
                }
                set
                {
                    if ((this._ContactTitle != value))
                    {
                        this.OnContactTitleChanging(value);
                        this.SendPropertyChanging();
                        this._ContactTitle = value;
                        this.SendPropertyChanged("ContactTitle");
                        this.OnContactTitleChanged();
                    }
                }
            }
    
            [Column(Storage = "_Address", DbType = "NVarChar(60)")]
            public string Address
            {
                get
                {
                    return this._Address;
                }
                set
                {
                    if ((this._Address != value))
                    {
                        this.OnAddressChanging(value);
                        this.SendPropertyChanging();
                        this._Address = value;
                        this.SendPropertyChanged("Address");
                        this.OnAddressChanged();
                    }
                }
            }
    
            [Column(Storage = "_City", DbType = "NVarChar(15)")]
            public string City
            {
                get
                {
                    return this._City;
                }
                set
                {
                    if ((this._City != value))
                    {
                        this.OnCityChanging(value);
                        this.SendPropertyChanging();
                        this._City = value;
                        this.SendPropertyChanged("City");
                        this.OnCityChanged();
                    }
                }
            }
    
            [Column(Storage = "_Region", DbType = "NVarChar(15)")]
            public string Region
            {
                get
                {
                    return this._Region;
                }
                set
                {
                    if ((this._Region != value))
                    {
                        this.OnRegionChanging(value);
                        this.SendPropertyChanging();
                        this._Region = value;
                        this.SendPropertyChanged("Region");
                        this.OnRegionChanged();
                    }
                }
            }
    
            [Column(Storage = "_PostalCode", DbType = "NVarChar(10)")]
            public string PostalCode
            {
                get
                {
                    return this._PostalCode;
                }
                set
                {
                    if ((this._PostalCode != value))
                    {
                        this.OnPostalCodeChanging(value);
                        this.SendPropertyChanging();
                        this._PostalCode = value;
                        this.SendPropertyChanged("PostalCode");
                        this.OnPostalCodeChanged();
                    }
                }
            }
    
            [Column(Storage = "_Country", DbType = "NVarChar(15)")]
            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();
                    }
                }
            }
    
            [Column(Storage = "_Phone", DbType = "NVarChar(24)")]
            public string Phone
            {
                get
                {
                    return this._Phone;
                }
                set
                {
                    if ((this._Phone != value))
                    {
                        this.OnPhoneChanging(value);
                        this.SendPropertyChanging();
                        this._Phone = value;
                        this.SendPropertyChanged("Phone");
                        this.OnPhoneChanged();
                    }
                }
            }
    
            [Column(Storage = "_Fax", DbType = "NVarChar(24)")]
            public string Fax
            {
                get
                {
                    return this._Fax;
                }
                set
                {
                    if ((this._Fax != value))
                    {
                        this.OnFaxChanging(value);
                        this.SendPropertyChanging();
                        this._Fax = value;
                        this.SendPropertyChanged("Fax");
                        this.OnFaxChanged();
                    }
                }
            }
    
            [Column(Storage = "_HomePage", DbType = "NText", UpdateCheck = UpdateCheck.Never)]
            public string HomePage
            {
                get
                {
                    return this._HomePage;
                }
                set
                {
                    if ((this._HomePage != value))
                    {
                        this.OnHomePageChanging(value);
                        this.SendPropertyChanging();
                        this._HomePage = value;
                        this.SendPropertyChanged("HomePage");
                        this.OnHomePageChanged();
                    }
                }
            }
    
            [Association(Name = "Supplier_Product", Storage = "_Products", ThisKey = "SupplierID", OtherKey = "SupplierID")]
            public EntitySet<Product> Products
            {
                get
                {
                    return this._Products;
                }
                set
                {
                    this._Products.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_Products(Product entity)
            {
                this.SendPropertyChanging();
                entity.Supplier = this;
            }
    
            private void detach_Products(Product entity)
            {
                this.SendPropertyChanging();
                entity.Supplier = null;
            }
        }
    

    1:1的自动生成映射类:

      using System.Data.Linq;
        using System.Data.Linq.Mapping;
        using System.Data;
        using System.Collections.Generic;
        using System.Reflection;
        using System.Linq;
        using System.Linq.Expressions;
        using System.ComponentModel;
        using System;
    
    
        [System.Data.Linq.Mapping.DatabaseAttribute(Name = "Northwind")]
        public partial class DataClasses1DataContext : System.Data.Linq.DataContext
        {
    
            private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
    
            #region Extensibility Method Definitions
            partial void OnCreated();
            partial void InsertSupplier(Supplier instance);
            partial void UpdateSupplier(Supplier instance);
            partial void DeleteSupplier(Supplier instance);
            partial void InsertProduct(Product instance);
            partial void UpdateProduct(Product instance);
            partial void DeleteProduct(Product instance);
            #endregion
    
            public DataClasses1DataContext() :
                base(global::System.Configuration.ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString, mappingSource)
            {
                OnCreated();
            }
    
            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 System.Data.Linq.Table<Supplier> Suppliers
            {
                get
                {
                    return this.GetTable<Supplier>();
                }
            }
    
            public System.Data.Linq.Table<Product> Products
            {
                get
                {
                    return this.GetTable<Product>();
                }
            }
        }
    
        [Table(Name = "dbo.Suppliers")]
        public partial class Supplier : INotifyPropertyChanging, INotifyPropertyChanged
        {
    
            private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
    
            private int _SupplierID;
    
            private string _CompanyName;
    
            private string _ContactName;
    
            private string _ContactTitle;
    
            private string _Address;
    
            private string _City;
    
            private string _Region;
    
            private string _PostalCode;
    
            private string _Country;
    
            private string _Phone;
    
            private string _Fax;
    
            private string _HomePage;
    
            private EntityRef<Product> _Products;
    
            #region Extensibility Method Definitions
            partial void OnLoaded();
            partial void OnValidate(System.Data.Linq.ChangeAction action);
            partial void OnCreated();
            partial void OnSupplierIDChanging(int value);
            partial void OnSupplierIDChanged();
            partial void OnCompanyNameChanging(string value);
            partial void OnCompanyNameChanged();
            partial void OnContactNameChanging(string value);
            partial void OnContactNameChanged();
            partial void OnContactTitleChanging(string value);
            partial void OnContactTitleChanged();
            partial void OnAddressChanging(string value);
            partial void OnAddressChanged();
            partial void OnCityChanging(string value);
            partial void OnCityChanged();
            partial void OnRegionChanging(string value);
            partial void OnRegionChanged();
            partial void OnPostalCodeChanging(string value);
            partial void OnPostalCodeChanged();
            partial void OnCountryChanging(string value);
            partial void OnCountryChanged();
            partial void OnPhoneChanging(string value);
            partial void OnPhoneChanged();
            partial void OnFaxChanging(string value);
            partial void OnFaxChanged();
            partial void OnHomePageChanging(string value);
            partial void OnHomePageChanged();
            #endregion
    
            public Supplier()
            {
                this._Products = default(EntityRef<Product>);
                OnCreated();
            }
    
            [Column(Storage = "_SupplierID", AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
            public int SupplierID
            {
                get
                {
                    return this._SupplierID;
                }
                set
                {
                    if ((this._SupplierID != value))
                    {
                        this.OnSupplierIDChanging(value);
                        this.SendPropertyChanging();
                        this._SupplierID = value;
                        this.SendPropertyChanged("SupplierID");
                        this.OnSupplierIDChanged();
                    }
                }
            }
    
            [Column(Storage = "_CompanyName", DbType = "NVarChar(40) NOT NULL", 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 = "_ContactName", DbType = "NVarChar(30)")]
            public string ContactName
            {
                get
                {
                    return this._ContactName;
                }
                set
                {
                    if ((this._ContactName != value))
                    {
                        this.OnContactNameChanging(value);
                        this.SendPropertyChanging();
                        this._ContactName = value;
                        this.SendPropertyChanged("ContactName");
                        this.OnContactNameChanged();
                    }
                }
            }
    
            [Column(Storage = "_ContactTitle", DbType = "NVarChar(30)")]
            public string ContactTitle
            {
                get
                {
                    return this._ContactTitle;
                }
                set
                {
                    if ((this._ContactTitle != value))
                    {
                        this.OnContactTitleChanging(value);
                        this.SendPropertyChanging();
                        this._ContactTitle = value;
                        this.SendPropertyChanged("ContactTitle");
                        this.OnContactTitleChanged();
                    }
                }
            }
    
            [Column(Storage = "_Address", DbType = "NVarChar(60)")]
            public string Address
            {
                get
                {
                    return this._Address;
                }
                set
                {
                    if ((this._Address != value))
                    {
                        this.OnAddressChanging(value);
                        this.SendPropertyChanging();
                        this._Address = value;
                        this.SendPropertyChanged("Address");
                        this.OnAddressChanged();
                    }
                }
            }
    
            [Column(Storage = "_City", DbType = "NVarChar(15)")]
            public string City
            {
                get
                {
                    return this._City;
                }
                set
                {
                    if ((this._City != value))
                    {
                        this.OnCityChanging(value);
                        this.SendPropertyChanging();
                        this._City = value;
                        this.SendPropertyChanged("City");
                        this.OnCityChanged();
                    }
                }
            }
    
            [Column(Storage = "_Region", DbType = "NVarChar(15)")]
            public string Region
            {
                get
                {
                    return this._Region;
                }
                set
                {
                    if ((this._Region != value))
                    {
                        this.OnRegionChanging(value);
                        this.SendPropertyChanging();
                        this._Region = value;
                        this.SendPropertyChanged("Region");
                        this.OnRegionChanged();
                    }
                }
            }
    
            [Column(Storage = "_PostalCode", DbType = "NVarChar(10)")]
            public string PostalCode
            {
                get
                {
                    return this._PostalCode;
                }
                set
                {
                    if ((this._PostalCode != value))
                    {
                        this.OnPostalCodeChanging(value);
                        this.SendPropertyChanging();
                        this._PostalCode = value;
                        this.SendPropertyChanged("PostalCode");
                        this.OnPostalCodeChanged();
                    }
                }
            }
    
            [Column(Storage = "_Country", DbType = "NVarChar(15)")]
            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();
                    }
                }
            }
    
            [Column(Storage = "_Phone", DbType = "NVarChar(24)")]
            public string Phone
            {
                get
                {
                    return this._Phone;
                }
                set
                {
                    if ((this._Phone != value))
                    {
                        this.OnPhoneChanging(value);
                        this.SendPropertyChanging();
                        this._Phone = value;
                        this.SendPropertyChanged("Phone");
                        this.OnPhoneChanged();
                    }
                }
            }
    
            [Column(Storage = "_Fax", DbType = "NVarChar(24)")]
            public string Fax
            {
                get
                {
                    return this._Fax;
                }
                set
                {
                    if ((this._Fax != value))
                    {
                        this.OnFaxChanging(value);
                        this.SendPropertyChanging();
                        this._Fax = value;
                        this.SendPropertyChanged("Fax");
                        this.OnFaxChanged();
                    }
                }
            }
    
            [Column(Storage = "_HomePage", DbType = "NText", UpdateCheck = UpdateCheck.Never)]
            public string HomePage
            {
                get
                {
                    return this._HomePage;
                }
                set
                {
                    if ((this._HomePage != value))
                    {
                        this.OnHomePageChanging(value);
                        this.SendPropertyChanging();
                        this._HomePage = value;
                        this.SendPropertyChanged("HomePage");
                        this.OnHomePageChanged();
                    }
                }
            }
    
            [Association(Name = "Supplier_Product", Storage = "_Products", ThisKey = "SupplierID", OtherKey = "SupplierID", IsUnique = true, IsForeignKey = false)]
            public Product Products
            {
                get
                {
                    return this._Products.Entity;
                }
                set
                {
                    Product previousValue = this._Products.Entity;
                    if (((previousValue != value)
                                || (this._Products.HasLoadedOrAssignedValue == false)))
                    {
                        this.SendPropertyChanging();
                        if ((previousValue != null))
                        {
                            this._Products.Entity = null;
                            previousValue.Supplier = null;
                        }
                        this._Products.Entity = value;
                        if ((value != null))
                        {
                            value.Supplier = this;
                        }
                        this.SendPropertyChanged("Products");
                    }
                }
            }
    
            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));
                }
            }
        }
    
        [Table(Name = "dbo.Products")]
        public partial class Product : INotifyPropertyChanging, INotifyPropertyChanged
        {
    
            private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
    
            private int _ProductID;
    
            private string _ProductName;
    
            private int _SupplierID;
    
            private System.Nullable<int> _CategoryID;
    
            private string _QuantityPerUnit;
    
            private System.Nullable<decimal> _UnitPrice;
    
            private System.Nullable<short> _UnitsInStock;
    
            private System.Nullable<short> _UnitsOnOrder;
    
            private System.Nullable<short> _ReorderLevel;
    
            private bool _Discontinued;
    
            private EntityRef<Supplier> _Supplier;
    
            #region Extensibility Method Definitions
            partial void OnLoaded();
            partial void OnValidate(System.Data.Linq.ChangeAction action);
            partial void OnCreated();
            partial void OnProductIDChanging(int value);
            partial void OnProductIDChanged();
            partial void OnProductNameChanging(string value);
            partial void OnProductNameChanged();
            partial void OnSupplierIDChanging(int value);
            partial void OnSupplierIDChanged();
            partial void OnCategoryIDChanging(System.Nullable<int> value);
            partial void OnCategoryIDChanged();
            partial void OnQuantityPerUnitChanging(string value);
            partial void OnQuantityPerUnitChanged();
            partial void OnUnitPriceChanging(System.Nullable<decimal> value);
            partial void OnUnitPriceChanged();
            partial void OnUnitsInStockChanging(System.Nullable<short> value);
            partial void OnUnitsInStockChanged();
            partial void OnUnitsOnOrderChanging(System.Nullable<short> value);
            partial void OnUnitsOnOrderChanged();
            partial void OnReorderLevelChanging(System.Nullable<short> value);
            partial void OnReorderLevelChanged();
            partial void OnDiscontinuedChanging(bool value);
            partial void OnDiscontinuedChanged();
            #endregion
    
            public Product()
            {
                this._Supplier = default(EntityRef<Supplier>);
                OnCreated();
            }
    
            [Column(Storage = "_ProductID", AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = 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 = "_ProductName", DbType = "NVarChar(40) NOT NULL", CanBeNull = false)]
            public string ProductName
            {
                get
                {
                    return this._ProductName;
                }
                set
                {
                    if ((this._ProductName != value))
                    {
                        this.OnProductNameChanging(value);
                        this.SendPropertyChanging();
                        this._ProductName = value;
                        this.SendPropertyChanged("ProductName");
                        this.OnProductNameChanged();
                    }
                }
            }
    
            [Column(Storage = "_SupplierID", DbType = "Int")]
            public int SupplierID
            {
                get
                {
                    return this._SupplierID;
                }
                set
                {
                    if ((this._SupplierID != value))
                    {
                        if (this._Supplier.HasLoadedOrAssignedValue)
                        {
                            throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
                        }
                        this.OnSupplierIDChanging(value);
                        this.SendPropertyChanging();
                        this._SupplierID = value;
                        this.SendPropertyChanged("SupplierID");
                        this.OnSupplierIDChanged();
                    }
                }
            }
    
            [Column(Storage = "_CategoryID", DbType = "Int")]
            public System.Nullable<int> CategoryID
            {
                get
                {
                    return this._CategoryID;
                }
                set
                {
                    if ((this._CategoryID != value))
                    {
                        this.OnCategoryIDChanging(value);
                        this.SendPropertyChanging();
                        this._CategoryID = value;
                        this.SendPropertyChanged("CategoryID");
                        this.OnCategoryIDChanged();
                    }
                }
            }
    
            [Column(Storage = "_QuantityPerUnit", DbType = "NVarChar(20)")]
            public string QuantityPerUnit
            {
                get
                {
                    return this._QuantityPerUnit;
                }
                set
                {
                    if ((this._QuantityPerUnit != value))
                    {
                        this.OnQuantityPerUnitChanging(value);
                        this.SendPropertyChanging();
                        this._QuantityPerUnit = value;
                        this.SendPropertyChanged("QuantityPerUnit");
                        this.OnQuantityPerUnitChanged();
                    }
                }
            }
    
            [Column(Storage = "_UnitPrice", DbType = "Money")]
            public System.Nullable<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 = "_UnitsInStock", DbType = "SmallInt")]
            public System.Nullable<short> UnitsInStock
            {
                get
                {
                    return this._UnitsInStock;
                }
                set
                {
                    if ((this._UnitsInStock != value))
                    {
                        this.OnUnitsInStockChanging(value);
                        this.SendPropertyChanging();
                        this._UnitsInStock = value;
                        this.SendPropertyChanged("UnitsInStock");
                        this.OnUnitsInStockChanged();
                    }
                }
            }
    
            [Column(Storage = "_UnitsOnOrder", DbType = "SmallInt")]
            public System.Nullable<short> UnitsOnOrder
            {
                get
                {
                    return this._UnitsOnOrder;
                }
                set
                {
                    if ((this._UnitsOnOrder != value))
                    {
                        this.OnUnitsOnOrderChanging(value);
                        this.SendPropertyChanging();
                        this._UnitsOnOrder = value;
                        this.SendPropertyChanged("UnitsOnOrder");
                        this.OnUnitsOnOrderChanged();
                    }
                }
            }
    
            [Column(Storage = "_ReorderLevel", DbType = "SmallInt")]
            public System.Nullable<short> ReorderLevel
            {
                get
                {
                    return this._ReorderLevel;
                }
                set
                {
                    if ((this._ReorderLevel != value))
                    {
                        this.OnReorderLevelChanging(value);
                        this.SendPropertyChanging();
                        this._ReorderLevel = value;
                        this.SendPropertyChanged("ReorderLevel");
                        this.OnReorderLevelChanged();
                    }
                }
            }
    
            [Column(Storage = "_Discontinued", DbType = "Bit NOT NULL")]
            public bool Discontinued
            {
                get
                {
                    return this._Discontinued;
                }
                set
                {
                    if ((this._Discontinued != value))
                    {
                        this.OnDiscontinuedChanging(value);
                        this.SendPropertyChanging();
                        this._Discontinued = value;
                        this.SendPropertyChanged("Discontinued");
                        this.OnDiscontinuedChanged();
                    }
                }
            }
    
            [Association(Name = "Supplier_Product", Storage = "_Supplier", ThisKey = "SupplierID", OtherKey = "SupplierID", IsForeignKey = true)]
            public Supplier Supplier
            {
                get
                {
                    return this._Supplier.Entity;
                }
                set
                {
                    Supplier previousValue = this._Supplier.Entity;
                    if (((previousValue != value)
                                || (this._Supplier.HasLoadedOrAssignedValue == false)))
                    {
                        this.SendPropertyChanging();
                        if ((previousValue != null))
                        {
                            this._Supplier.Entity = null;
                            previousValue.Products = null;
                        }
                        this._Supplier.Entity = value;
                        if ((value != null))
                        {
                            value.Products = this;
                            this._SupplierID = value.SupplierID;
                        }
                        else
                        {
                            this._SupplierID = default(int);
                        }
                        this.SendPropertyChanged("Supplier");
                    }
                }
            }
    
            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));
                }
            }
        }
    

     可以发现,EntitySet这样集概念的属性变成了EntityRef单体的引用属性

  • 相关阅读:
    《海量数据库解决方式》读后感
    HDU-3533-Escape(BFS)
    (017)将一棵二叉查找树重构成链表(keep it up)
    hadoop招聘需求每天都在添加,短短半个月时间,需求量差点儿翻了一番,这是大数据要爆发的节奏么?
    关于Oracle安装完毕后,登录时遇到的错误的解决的方法
    C/C++产生随机数
    android手机SD卡中的android_secure目录
    【Unity Shaders】Lighting Models —— 衣服着色器
    ASM相关视图
    win2003的IIS無法使用,又一次安裝提示找不到iisadmin.mfl文件
  • 原文地址:https://www.cnblogs.com/lutzmark/p/1680830.html
Copyright © 2011-2022 走看看