首页 文章

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

提问于
浏览
0

我有这个实体(在数据库和实体框架中):

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
}

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

我的 Key 列没有唯一约束,因为可能有多个行具有相同的 Key 值 . 例如:

ID   Key   LanguageID    Value
---------------------------------------------------
1    1     1             Name in Language 1
2    1     2             Name in Language 2

我不能使用Mapping表来强制执行FK而不是 Key ,因为多个表使用同一个表(Product 's Name, Category' s Name,Article's Content) .

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

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

1 回答

  • 2

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

    enter image description here

    • 我现在可以使用 IDENTITY 安全地插入 LanguageKey .

    • 我现在可以拥有产品和类别 NameLanguageKey 的FK,这是不可能的,因为 Key 不是唯一的 .

相关问题