Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 其中一个ID组件不';不要总是更新_Sql_Sql Server_Entity Framework - Fatal编程技术网

Sql 其中一个ID组件不';不要总是更新

Sql 其中一个ID组件不';不要总是更新,sql,sql-server,entity-framework,Sql,Sql Server,Entity Framework,Im使用实体框架6 鉴于以下模型: MyType (Id+Language are keys) - Id - Language // will be represented by values like "en", "no", "dk", "de" - Label MyValue (Id+SomeOtherEntityId+Language are keys) - Id - SomeOtherEntityId - Language - Value 我希望MyTypes中的Id列在为该Id提供

Im使用实体框架6

鉴于以下模型:

MyType (Id+Language are keys)
- Id
- Language // will be represented by values like "en", "no", "dk", "de"
- Label

MyValue (Id+SomeOtherEntityId+Language are keys)
- Id
- SomeOtherEntityId
- Language
- Value
我希望
MyTypes
中的
Id
列在为该Id提供新语言时自动递增(如果有意义的话)

例如:

context.MyTypes.Add(new MyType { Label = "Label", Language = "no" });
context.MyTypes.Add(new MyType { Label = "Label", Language = "da" });
context.MyTypes.Add(new MyType { Label = "Label", Language = "nl" });
这为我提供了一个如下所示的数据库:

| Id | Language | Label |
|----|----------|-------| 
| 1  | no       | Label |
| 2  | da       | Label |
| 3  | nl       | Label | 
而我真正想要的是:

| Id | Language | Label  |
|----|----------|--------| 
| 1  | no       | Label  |
| 1  | da       | Label  |
| 1  | nl       | Label  | 
| 2  | no       | Label2 |
| 2  | da       | Label2 |
| 2  | nl       | Label2 | 
目前,我已将ID列设置为标识,从而使其自动递增

  • 从数据库的角度来看,是否可以根据语言列将其配置为自动递增
  • 这是通过EntityFramework配置的吗
  • 我想另一种方法是使用一个单独的类型表,其中只包含一个ID,然后将不同语言的标签链接到该表。但是,我希望避免这种情况,因为这种结构非常简单,而且为了ID而使用另一个表似乎增加了一些不必要的复杂性

    另一种选择是从代码中控制这一点(当插入新的MyTypes时,首先获取正确的ID,然后添加其余的ID)


    关于这类问题有什么最佳做法吗?

    据我所知,你试图做的事情是做不到的。(标识是一行一个不同的值)

    我觉得有两张桌子是对的:

    桌面(Id、代码、Blabla)

    然后通过代码值和语言值进行翻译,得到可读的代码

    tableTrans(Id, ExtId, Language, Value), with ExtId as a FK
    
    tableTrans(ExtId, Language, Value) with a composite Key comprisong the FK