• 光脚丫学LINQ(042):如何将列表示为由数据库生成的列


    演示视频:http://u.115.com/file/f2bdf2a2da

    演示说明
    在本演示中,介绍了如何在对象模型中,使实体类的列成员来映射数据表中由数据库生成值的列;
    也介绍了这种列成员自动获取数据库生成值的特性,及其实现办法;
    在演示的结尾介绍了如何使用对象关系设计器来设置由数据库生成值的列。
    另外说明一下,可能是因为我数学没有学好?
    演示中竟然将订单编号11084念成了一千一百零八十四。这回真是糗大了!^_^

    演示重点
    什么是由数据库生成的列?
    也就是列的数值由数据库自动生成,并不需要我们提供。比如自增长列、版本列等。
    通过将实体类的列成员的ColumnAttribute特性的IsDbGenerated设置为true来表示由数据库生成的列。
    据此可以推断,默认情况下IsDbGenerated属性值应该为false,这样的默认值是比较合理的。
    如果实体类的某个列成员表示的是数据库生成的列,那么就不要试图为这些的列成员赋值,
    虽然在代码中赋值是没有问题的,但所提供的数值是不会被保存在数据库中的。
    这可以通过LINQ to SQL生成的SQL命令看出来,
    无论是INSERT,还是UPDATE都不会包含IsDbGenrated=true的列成员。
    如果实体类列成员的ColumnAttribute.IsDbGenerated设置为true的话,
    那么当LINQ to SQL执行了添加或删除操作时,都会自动的获取这些列的值,即数据库生成的值。
    因此,我们无需再次显式的使用LINQ to SQL去查询这个由数据库生成的值。
    实际上,当LINQ to SQL发送更新或者添加SQL命令的时候,
    同时也会发送一个获取数据库生成列的数值的SELECT命令。

    示例代码

    [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();
      }
     }
    }
    

    2010-12-4 光脚丫思考

  • 相关阅读:
    Spring事务传播特性NOT_SUPPORTED使用演示
    spring配置基于xml的声明式事务
    反射的简单应用
    MyBatis批处理工具类MyBatisBatchHelper.java
    Mybatis分页插件PageHelper的使用
    利用Spring的Profile加载指定数据源
    Nginx状态信息(status)配置及信息详解
    nginx配置基于域名、端口、IP的虚拟主机
    Nginx Linux安装与部署
    rename 批量修改文件名简单用法
  • 原文地址:https://www.cnblogs.com/GJYSK/p/1918006.html
Copyright © 2020-2023  润新知