我刚刚从我的DBA查看了我的数据库架构,并使用16位唯一标识符作为主键。我的问题是如何在MVC的路由中使用它。
像http://www.app.com/project/21212/product/212121
这样的东西这是一个中型企业应用程序,为什么你还需要我们的表的GUID?
我知道我们可以创建友好的ID字段,但我知道MVC Routing不建议在路由中使用数据库ID。
所以我想我的问题是:
为什么我们的主键需要16位Guid?
我怎么能在路线中使用它。该路由不应包含和数据库ID。
答案 0 :(得分:1)
让我们以此页面为例。我想我们都同意StackOverflow是一个成功的MVC应用程序......
https://stackoverflow.com/questions/4079861/routes-with-16-bit-guids-seem-crazy
那是什么“4079861”?数据库ID?
请注意,数据库ID实际上是唯一重要的部分,因为这些链接也会到达同一位置:
https://stackoverflow.com/questions/4079861/
https://stackoverflow.com/questions/4079861/Foo
所以,简短的回答是:是的,你的路线可能会有一个很难看的Guid。如果您遇到问题,请与您的DBA联系。
答案 1 :(得分:1)
在问题的数据库部分
决定使用哪种DB密钥应完全独立于MVC路由。 DBA可能会选择使用他们认为适合您的应用程序的任何值,而不必担心您将如何制定您的路线。我无法判断它们是否对您的域名有意义。
在问题的路线/网址部分
根据您尝试的操作,向路径添加GUID可能不是路由/ URL的最佳选择。 “ASP.NET MVC in Action”(第95页)的作者提供了一些关于URL应该如何的良好指导:
如果您有GUID作为数据库ID,请查看是否可以使用其他值来制定到每个资源/记录的路由。例如,产品的名称加上数据库ID的最后4位数,或者您可以根据您尝试访问的信息提出的另一个唯一且用户友好(参见指南)值。
答案 2 :(得分:0)
您应该问问自己:是否有另一种方法来唯一标识我的 [插入名称] ?
@Mark给出了StackOverflow示例。好的部分是它是一个数字,即使它很长。数字比GUID更好。
您的选择可能是:
您最终使用的内容完全取决于您的情况和要求。