>  기사  >  데이터 베이스  >  光脚丫学LINQ(042):如何将列表示为由数据库生成的列

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

WBOY
WBOY원래의
2016-06-07 15:35:361049검색

演示视频: http://u.115.com/file/f2bdf2a2da 演示说明 在本演示中,介绍了如何在对象模型中,使实体类的列成员来映射数据表中由数据库生成值的列; 也介绍了这种列成员自动获取数据库生成值的特性,及其实现办法; 在演示的结尾介绍了如何使用对象关系设计

演示视频: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命令。

示例代码

2010-12-4 光脚丫思考

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.