为没有UNIQUE约束的列生成唯一的数字/值

时间:2015-10-26 17:53:23

标签: sql-server asp.net-mvc entity-framework transactions

我有这个实体(包括数据库和实体框架):

function y = test(A, x)
%// TESTING CODE:
if nargin==0
    A = default_value_for_A;
    x = default_value_for_x;
end
... %// rest of the function code

我已经阅读过这篇文章,但我的问题有点不同:EF6: How to generate a unique number automatically based on entity Id

我的public class LanguageValue { public int ID { get; set; } public long Key { get; set; } // bigint in database public int LanguageID { get; set; } // FK with a Language table in database public string Value { get; set; } // nvarchar(MAX) in database public bool Active { get; set; } // bit in database } 列没有唯一约束,因为可能有多个行具有相同的Key值。例如:

Key

我无法使用Mapping表来强制执行FK而不是ID Key LanguageID Value --------------------------------------------------- 1 1 1 Name in Language 1 2 1 2 Name in Language 2 ,因为多个表使用同一个表(产品名称,类别名称,文章内容)。

现在每当我需要插入KeyProduct记录时,我需要插入相应的语言值。但是,我还没有找到一种生成其中唯一的密钥的方法,而且,如果一次处理两个插入,则需要是唯一的(例如,同时添加产品和类别)

我正在考虑Category,如果这是我对RNG的安全赌注,还是有更好的方法/设计来实现它?

1 个答案:

答案 0 :(得分:2)

好的,我认为我的问题来自糟糕的数据库设计。我将LanguageValue表分成两个表,如下图所示,并实现了以前的设计没有的2个专业人员:

enter image description here

  1. 我现在可以使用LanguageKey安全地插入IDENTITY
  2. 我现在可以拥有产品和类别NameLanguageKey的FK,这是不可能的,因为Key不是唯一的。