是否可以使用两个字段(例如ZIPCode& Route)来创建主键?
public class RouteInfo
{
[Key]
public int ZIPCode { get; set; }
public string Route { get; set; }
public int BusinessCount { get; set; }
public int ApartmentCount { get; set; }
public int POBoxCount { get; set; }
public int ResidentialCount { get; set; }
}
zipcode有1:很多关系:路由。因此,当客户输入邮政编码时,他会获回该邮政编码中的路线列表,例如:
B001
B002
B003
...
C001
C002
C005
这些可以与zipcode结合生成主键吗?例如:
21001B001
21001B002
21001B003
...
21001C001
21001C002
21001C005
答案 0 :(得分:0)
您可以将带有zipcode和路由的复合主键用作单独的值,但将它们存储在一起时会变得棘手。我不太了解您需要使用的有效邮政编码和路线,但您可能(或不会)获得2个(或更多)不同的邮政编码组合以及相同结果代码的路线
例如:
21001
拉<{1}}。B001
拉<{1}}。我会尝试单独存储它们,或者甚至更好地使用代理(自动增量)数值作为主键。这可以解决未来的问题,例如当路线改变它的代码时会发生什么?突然路线B001更新了,它现在是G023。您需要更新它的主键值以及与之相关的所有外键。邮政编码也会发生同样的情况。邮政编码也可能在不同国家(如以色列和美国)重复使用。