【发布时间】:2018-12-03 19:49:29
【问题描述】:
我有一个使用 Linq2sql 访问的包含几列的简单表。唯一不变的列是二进制。但是当我尝试将其设为主要列时 - Linq2sql 告诉我:
身份成员不支持 System.Byte[]。
(表示primary。表中没有身份。)
如果我没有设置任何主列,linq2sql 会告诉我没有主键就无法工作。
如果我将不同的列设置为主要列 - 我无法更改该列。
这里有什么解决方案?
【问题讨论】:
-
在表中添加 id 列?
-
@DaleBurrell 但主列必须是唯一的。
-
是的,添加一个唯一的 id 列?
alter table mytable add id int identity (1,1) -
大多数人使用标识列...它不会错误地自行重置...但是您可以编写自己的序列生成器...不过似乎有点 OTT。
-
如果您不信任 SQL 服务器来维护序列,那么您如何信任它来处理实际数据呢?
int标识列适用于大约 20 亿行。如果您真的对此感到担心,请使用bigint。您可以使用uniqueidentifier列,但将其用作集群键也不完美。
标签: c# sql .net sql-server linq-to-sql