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

本文介绍如何在实体类中通过ColumnAttribute特性配置主键属性,包括单主键和多主键的设置方法及其对数据更新的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

视频演示: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(); } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值