鉴于前提:
为什么人们使用linq来sql?
我一直看到关于linq到sql的问题,我想知道我是否遗漏了一些东西.
我有一个带有这些字段的表的SQL Server数据库:
bit的默认值为1 , NOT NULL.smalldatetime具有默认值gettime(),NOT NULL.int没有默认值,IDENTITY,NOT NULL.当我为此表生成Linq to SQL时,会发生以下情况:
bit没有给出特殊处理.smalldatetime没有给出特殊处理.int被标记为IsDbGenerated.这意味着当我使用Linq to SQL进行插入时,将发生以下情况:
bit将被发送为0,覆盖默认值.对?smalldatetime将被作为一个未初始化的System.DateTime,生产在SQL服务器错误,因为它不与SQL Server的SMALLDATETIME范围不同.对?IsDbGenerated int不会被发送; DB将生成一个Linq to SQL将读回的值.我必须做出哪些更改才能使此方案有效?
总结一下:我想要具有DB分配的默认值的非可空字段,但是IsDbGenerated如果它意味着在使用Linq to SQL进行更新或插入时我无法为它们提供值,则我不需要它们.IsDbGenerated如果这意味着我必须手动修改Linq生成的代码到SQL,我也不想要它们.
编辑:答案似乎是这是当前Linq to SQL的限制.
LINQ毫无疑问简化了数据库编程,但是它有缺点吗?内联SQL要求以某种方式与数据库通信,以打开数据库进行注入.内联SQL还必须进行语法检查,构建计划,然后执行,这需要宝贵的周期.存储过程也是伟大的数据库应用程序编程中坚如磐石的标准.我认识的许多程序员使用简化开发的数据层,但不是LINQ的程度.现在是时候放弃SP而去LINQ吗?