我正在使用ASP.NET和实体框架来创建一个网站。我目前有一个地图表,用于许多到多个之间的关系.比方说用户和足球队。所以:
用户
团队
UserTeams
第1部分:对映射表的主键使用复合键是最佳实践吗?换言之:
UserTeams表
PK UserId
PK TeamId
PreferenceId
第2部分:警告是我还有另一个表。让我们称之为"UserTeamPredictions“,它存储用户对给定团队每年的预测。该表有一个指向映射表的外键。所以看起来是这样的:
UserTeamPredictions表
PK UserTeamPredictionId
FK UserId
FK TeamId
预测PredictionYear
在实体框架中,这似乎很好,但是,当引用第三方控件中的关系时,我遇到了一些问题,我像Telerik一样使用这些关系。尽管它可能不是理想的数据设置,但我是否应该更改表结构/关系,以便更容易地在代码中使用数据绑定和其他东西?
更改是在UserTeams映射表中添加一个整数主键,允许UserTeamPredictions表直接引用该键,而不是像当前那样通过复合键:
UserTeams表
PK UserTeamId
FK UserId
FK TeamId
PreferenceId
UserTeamPredictions表
PK UserTeamPredictionId
FK UserTeamId
预测PredictionYear
你觉得呢?
发布于 2009-07-23 21:06:38
你应该改变它。搜索堆栈溢出以讨论“自然密钥”--几乎所有人都认为代理键更好,特别是在使用实体生成时。一般情况下,自然键或复合键不能很好地与实体框架样式DAL层一起使用。例如,Lightspeed和Subsonic都要求有一个唯一的列作为PK.在它的当前版本中,Lightspeed甚至坚持您的列被称为"Id",尽管这将改变下一个版本。
https://stackoverflow.com/questions/1174469
复制相似问题