Ili*_*hev 3 sql sql-server nvarchar unique linq-to-sql
我有一个简单的表:
File: path | deleted | categories | description
我想将该表用于 Linq to SQL 实体模型。在模型上,该列path(nvarchar数据库中的字符串)可以设置为主键,但 Visual Studio 表设计器不是这种情况。
路径是使一个文件独一无二的原因,因此我必须确保表中没有重复的路径。如何做到这一点?谢谢你的时间。
您可以使用 SQL 中的 UNIQUE 约束、NOT NULL UNIQUE 约束或 PRIMARY KEY 约束使列唯一。但是,我能想到的每个当前 dbms 都对 columnm 的长度有一个或多个限制,可以通过这种方式进行约束。
这意味着在最一般的情况下,您有一个相当引人注目的问题。例如,Windows 上的UNC 路径的长度约为 32,767 个字符。
Linux 系统差异很大。根据 Google 的快速研究,1024 和 4096 似乎很常见。
我认为您将不得不仅对代理键施加唯一约束。(你不知道这样说对数据库人员有多大伤害。)问题是你可以在代理上强制唯一性,但不能在它取代的东西上。它所取代的东西是重要的部分。
身份证号码在一般情况下不起作用;你很容易得到 {1, /etc/adjtime}, {2, /etc/adjtime}, {3, /etc/adjtime}。您需要某种方式将真实数据与代理键的值联系起来。像hashbytes () 这样的东西会在 T-SQL 中“工作”;linq 也有类似的功能。(但是你可以有冲突,就像你可以与几乎所有的散列函数一样。)