• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
光脚丫思考的专栏
十年窗下无人问,一举成名天下知!
博客园    首页    新随笔    联系   管理    订阅  订阅

光脚丫学LINQ(030):如何让实体类成员表示主键

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


光脚总结
要想使实体类中的列属性表示数据表中的主键列,则可以为ColumnAttribute特性添加IsPrimaryKey属性,并将其设置为true。
实体类如果没有指定任何主键,则数据只能读取,不能修改。是相对于数据库而言,而并非内存中的对象。
可以同时指定多个主键,而且所指定的主键并非一定要与数据表中的主键对应。
设置一个对应数据表主键列的属性,肯定能够正确的更新数据,这是最通常的做法。
设置一个不对应数据表的主键,能够正确更新数据。
设置多个主键列属性,也能够正确更新数据。
但是,已经被设置为主键列的属性,其数据不可以被修改,更不会被更新的,否则就会引发异常。
异常的大意上是说:无法更改定义对象标识的成员。
也就是说,只能设置非主键列的属性值。在这种情况下数据将会被正确的更新。
如果没有修改主键列的属性值,那么以上几种情况更新数据时,所生成SQL命令基本上是一致的,似乎没什么区别。


示例代码

[Column(Storage="_CustomerID", DbType="NChar(5) NOT NULL",   
    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();   
        }   
    }   
}

 

posted @ 2010-11-03 09:48  光脚丫思考  阅读(1007)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3