如果我在MS SQL数据库中创建一个表,其ID列设置为Identity,auto increment和primary key。为什么使用此列的只读属性创建的关联LINQ对象设置为False?这使得您可以在LINQ中插入ID,但实际上,只丢弃提供给ID字段的值,数据库会自动对列进行自动编号。尝试插入时,LINQ不会产生错误。
LINQ中的ID列显示为:
自动生成的值=真
主键= True
只读=错误(为什么?该值无法插入数据库!)
我可以理解,SQL中的ID值设置为允许插入。但在这种情况下,只会忽略这些值,并且不会抛出任何错误。是否有理由将此类自动生成列的只读值默认设置为True?
谢谢!
答案 0 :(得分:3)
仅仅因为值是自动生成的,并不意味着您无法手动插入它。您需要做的就是执行以下操作:
SET IDENTITY_INSERT table ON
Linq没有办法确定你不允许使用身份插入,特别是因为通常只为几个语句打开它然后关闭它,所以默认情况下它似乎让你。如果您作为程序员更了解,只需关闭标志即可。