发布网友 发布时间:2022-05-03 23:16
共2个回答
懂视网 时间:2022-05-04 03:37
演示视频: 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 光脚丫思考
热心网友 时间:2022-05-04 00:45
(.dbml) 元数据文件生成 Visual Basic 或 C# 源代码。 此方法提供了一个在生成应用程序映射代码前自定义默认 .dbml 文件的机会。 这是一项高级功能。此过程中的步骤如下:1、生成 .dbml 文件。2、使用编辑器修改此.dbml文件 。 请注意,此 .dbml 文件必须通过 LINQ to SQL .dbml 文件的架构定义 (.xsd) 文件的验证。 有关更多信息,请参见 LINQ to SQL 中的代码生成。3、生成Visual Basic或C#源代码。下面的示例使用SQLMetal命令行工具。 有关更多信息,请参见 SqlMetal.exe(代码生成工具)。示例下面的代码从 Northwind 示例数据库生成 .dbml 文件。 您可以使用数据库的名称或 .mdf 文件的名称作为数据库元数据的源。SqlMetal /server:.\SQLExpress /database:Northwind /dbml:" Northwind.dbml"SqlMetal /dbml:"C:\Northwind.dbml" "C:\LINQ\Northwind.mdf"