为什么LINQ的默认ID(主键)ReadOnly = False?

时间:2015-08-11 12:27:01

标签: c# sql-server database linq

如果我在MS SQL数据库中创建一个表,其ID列设置为Identity,auto increment和primary key。为什么使用此列的只读属性创建的关联LINQ对象设置为False?这使得您可以在LINQ中插入ID,但实际上,只丢弃提供给ID字段的值,数据库会自动对列进行自动编号。尝试插入时,LINQ不会产生错误。

LINQ中的ID列显示为:

自动生成的值=真

主键= True

只读=错误(为什么?该值无法插入数据库!)

我可以理解,SQL中的ID值设置为允许插入。但在这种情况下,只会忽略这些值,并且不会抛出任何错误。是否有理由将此类自动生成列的只读值默认设置为True?

谢谢!

1 个答案:

答案 0 :(得分:3)

仅仅因为值是自动生成的,并不意味着您无法手动插入它。您需要做的就是执行以下操作:

SET IDENTITY_INSERT table ON

Linq没有办法确定你不允许使用身份插入,特别是因为通常只为几个语句打开它然后关闭它,所以默认情况下它似乎让你。如果您作为程序员更了解,只需关闭标志即可。