Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在表中没有主键的列上设置IsPrimaryKey=true_C#_Sql_Sql Server_Linq To Sql_Sql Server 2008 - Fatal编程技术网

C# 在表中没有主键的列上设置IsPrimaryKey=true

C# 在表中没有主键的列上设置IsPrimaryKey=true,c#,sql,sql-server,linq-to-sql,sql-server-2008,C#,Sql,Sql Server,Linq To Sql,Sql Server 2008,我正在编写一个快速应用程序,使用LINQtoSQL用一些测试数据填充数据库,但遇到了一个问题,因为其中一个表没有这个家伙描述的主键 根据上面的答案,我将IsPrimaryKey属性添加到一个适当的列中,即使我没有更改db表本身(即,仍然没有主键),应用程序仍然可以工作 我希望这对于我当前的意图来说是可以的,但是如果没有主键的表被LINQ对象视为有主键,是否会产生任何副作用 (我只能认为,如果我试图从一个表(或填充到一个表)中读取“主键”列在多行中具有相同值的数据,这可能是一个问题)。使用ORM框

我正在编写一个快速应用程序,使用LINQtoSQL用一些测试数据填充数据库,但遇到了一个问题,因为其中一个表没有这个家伙描述的主键

根据上面的答案,我将IsPrimaryKey属性添加到一个适当的列中,即使我没有更改db表本身(即,仍然没有主键),应用程序仍然可以工作

我希望这对于我当前的意图来说是可以的,但是如果没有主键的表被LINQ对象视为有主键,是否会产生任何副作用


(我只能认为,如果我试图从一个表(或填充到一个表)中读取“主键”列在多行中具有相同值的数据,这可能是一个问题)。

使用ORM框架时,可以在ORM级别模拟键和外键,从而“隐藏和覆盖”数据库定义的键

也就是说,这是我不推荐的做法。即使模型比数据库本身更重要,逻辑结构也应该始终匹配。如果您被迫使用遗留数据库,而无法修复它(如在表上添加PK),那么您也可以这样做。但尽可能地走正道:)


没有PK=Pure-Evil的表。

使用ORM框架时,可以在ORM级别模拟键和外键,从而“隐藏和覆盖”数据库定义的键和外键

也就是说,这是我不推荐的做法。即使模型比数据库本身更重要,逻辑结构也应该始终匹配。如果您被迫使用遗留数据库,而无法修复它(如在表上添加PK),那么您也可以这样做。但尽可能地走正道:)


没有PK的表=纯邪恶。

基本上,如果所有的表更新都通过LINQ对象,那么您应该没事。如果您有一个DBA决定直接通过SQL修改数据,那么如果他用相同的PK值复制一行,您可能会很快遇到问题。

基本上,如果所有表更新都通过LINQ对象进行,您应该不会有问题。如果您的DBA决定直接通过SQL修改数据,那么如果他复制了具有相同PK值的行,您可能会很快遇到问题。

“没有PK的表=纯邪恶”-为什么?因为如果表没有PK,DB引擎将无法识别单个行。通过在用户界面(如SQLManagementStudio)上高亮显示并删除行,尝试从没有FK的表中直观地删除行。该工具将拒绝删除它们,因为它无法知道要删除的内容。引用Joe Celko的话:“如果没有主键,它就不是表”。任何“有用”表都必须有主键。“没有PK的表=纯邪恶”-为什么?因为如果表没有PK,DB引擎无法识别单行。通过在用户界面(如SQLManagementStudio)上高亮显示并删除行,尝试从没有FK的表中直观地删除行。该工具将拒绝删除它们,因为它无法知道要删除的内容。引用Joe Celko的话:“如果没有主键,它就不是表”。任何“有用”表都必须有主键。