繁体   English   中英

如何使用Linq在sql表中插入数据而不在表中设置任何主键

[英]how to insert data in sql table using Linq without seting any primary key in table

我有一个表,我不想在其中指定任何主键,之后我要使用Linq在表中插入记录... aahhh ...它给出错误消息“无法对文件执行创建,更新或删除操作'Table(abc)',因为它没有主键”

可以告诉我如何在不设置主键的情况下插入记录。 顺便说一句,我没有设置任何主键,因为该表将保留大量数据。

您不能将Linq-to-SQL直接用于没有主键的表,因为它不受支持。

如果您担心索引的性能下降,您可以做的是添加一个存储过程,该存储过程将进行插入并将其添加到数据上下文中。 这需要更多的工作,而且实际上不是Linq-to-SQL,它只是您在数据上下文中调用的一种方法。

无论如何,在身份主键字段上不会有明显的性能下降。

Tami-使用linq并坚持使用“最佳做法”并添加自动编号主键不是一个好主意吗,即使除了插入或更新之外也不会使用该主键? 我可以想到许多实例,这些实例似乎对主键的“非要求”后来在尝试更新到其他平台等时导致麻烦。

如果有令人信服的理由不添加“盲”主键,那么在问题中也可能会对此加以详细说明。 我想不出任何理由不添加它,特别是如果这意味着您不必围绕该限制编写代码。

吉姆

[编辑]塔米-我会对你诚实。 您可能需要研究惯例以最好地满足对此问题的任何答案。 基本上,由于不需要编辑或删除,因此您不需要在记录上建立索引,因此与linq的约定是基于数据完整性的假设。 从本质上讲,Linq(和许多其他编程工具)需要一个约定,该约定允许它们简洁地标识它们所包含的每个对象上的唯一键。 通过未定义它,您正在绕过此约定,因此linq正在为您进行标记。 fwd的唯一方法就是顺其自然。 即使您“觉得”索引是多余的,linq仍要求它允许您访问内置的全部功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM