我有这个实体(在数据库和实体框架中):
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) .
现在每当我需要插入 Product
或 Category
记录时,我需要插入相应的语言值 . 但是,我还没有找到一种生成其中唯一的密钥的方法,而且,如果一次处理两个插入,则需要是唯一的(例如,同时添加产品和类别) .
我正在考虑 Guid
,如果这是我对RNG的安全赌注,还是有更好的方法/设计来实现它?
1 回答
好吧,我认为我的问题来自糟糕的数据库设计 . 我将
LanguageValue
表分成两个表,如下图所示,并实现了前一个设计没有的2个专业人员:我现在可以使用
IDENTITY
安全地插入LanguageKey
.我现在可以拥有产品和类别
NameLanguageKey
的FK,这是不可能的,因为Key
不是唯一的 .