zoukankan      html  css  js  c++  java
  • linq to sql中外键关联关系

    其实使用linq to sql使用设计器比较容易操作外键关联的表。我这里也只是说说代码上的重点。可以方便以后手写

    还是sqlserver2000中的northwind库。打开linq to sql classes设计器。吧customers表和order表拖到表区域。发现这两个表有个链接那就是外键关联的。

    看设计器中的代码。customer类中

    。。。

     private string _Phone;
     
     private string _Fax;
     
     private EntitySet<Order> _Orders;

    。。。

    在这些字段属性有个 private EntitySet<Order> _Orders;他对应的就是order表类集合

    和数据库建立特性链接的时候

    [Association(Name="Customer_Order", Storage="_Orders", OtherKey="CustomerID")]
     public EntitySet<Order> Orders
     {
      get
      {
       return this._Orders;
      }
      set
      {
       this._Orders.Assign(value);
      }
     }

    然后还有就是customer的构造函数中

    public Customer()
     {
      OnCreated();
      this._Orders = new EntitySet<Order>(new Action<Order>(this.attach_Orders), new Action<Order>(this.detach_Orders));
     }

    在看orders实体类

    他的私有字段是这个:private EntityRef<Customer> _Customer;

    属性是:[Association(Name="Customer_Order", Storage="_Customer", ThisKey="CustomerID", IsForeignKey=true)]
     public Customer Customer
     {
      get
      {
       return this._Customer.Entity;
      }
      set
      {
       Customer previousValue = this._Customer.Entity;
       if (((previousValue != value)
          || (this._Customer.HasLoadedOrAssignedValue == false)))
       {
        this.SendPropertyChanging();
        if ((previousValue != null))
        {
         this._Customer.Entity = null;
         previousValue.Orders.Remove(this);
        }
        this._Customer.Entity = value;
        if ((value != null))
        {
         value.Orders.Add(this);
         this._CustomerID = value.CustomerID;
        }
        else
        {
         this._CustomerID = default(string);
        }
        this.SendPropertyChanged("Customer");
       }
      }
     }

    他的构造函数是这个

    public Order()
     {
      OnCreated();
      this._Customer = default(EntityRef<Customer>);
     }

    代码也没什么说的。有两个类EntitySet 和 EntityRef。一个是集合一个是引用。

    本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

  • 相关阅读:
    053518
    Ubuntu 20.04, 19.10 or 19.04出现libqtgui4 : Depends: libpng120 (>= 1.2.134) but it is not installed
    Ubuntu下安装最新OpenJdk1.8
    c#_FFMPEG使用心得(推流与拉流)
    [WPF 自定义控件]简单的表单布局控件
    WPF调用图片路径,或资源图片
    WPF中的数据模板(DataTemplate)
    MahApps.Metro 官方文档
    MahApps.Metro 图标
    WPF简单导航框架(Window与Page互相调用)
  • 原文地址:https://www.cnblogs.com/zjypp/p/2319488.html
Copyright © 2011-2022 走看看