【问题标题】:Binary cannot be primary but the only column that doesn't change is binary二进制不能是主要的,但唯一不变的列是二进制
【发布时间】: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


【解决方案1】:

添加一个唯一的 id 列,例如

alter table mytable add id int identity (1,1)

【讨论】:

    猜你喜欢
    • 2020-05-26
    • 2019-07-24
    • 2011-01-29
    • 1970-01-01
    • 2020-09-25
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    相关资源
    最近更新 更多