1

如果我想存储一个瓦片表,其中没有瓦片可以具有相同的 X 和 Y 值(每个都有一个唯一的位置),最好将主键设为“4,-20”之类的字符串(这看起来像错误答案)还是使用标准增量主键 ID 并将 X 和 Y 存储为其他列?

或者,我可以将 X 和 Y 都设为主键吗?然后我不需要存储某种组合字符串来确保它们是唯一的......或者我会吗?做某种双重约束?

基本上,我希望根据 X 和 Y 甚至一系列 X 和 Y 值快速查找一行。

public class Tile
{
    public int X { get; set; }
    public int Y { get; set; }
}
4

1 回答 1

0

您可以为此创建一个复合主键。主键保证每个值都是唯一的,当它应用于多个列时,它确保每一都是唯一的。

使用 Code-First 创建:(此博客文章用作参考

public class Tile
{
    [Key, Column(Order=1)]
    public int X { get; set; }

    [Key, Column(Order=2)]
    public int Y { get; set; }

    public string AdditionalField1 { get ;set; }
}

使用 DB-First 创建(我总是喜欢)

create table Tile
(
    [X] int not null,
    [Y] int not null,
    AdditionalField1 nvarchar(max) null,

    constraint PK_Tile primary key ([X], [Y])
);
于 2013-06-30T23:13:00.730 回答