动态MVC路由通过高效的数据库查找删除Id

时间:2012-06-10 07:59:50

标签: sql-server asp.net-mvc asp.net-mvc-3 fluent-nhibernate asp.net-mvc-routing

我有一个MVC 3应用程序,我想要不包含控制器或密钥名称的动态URL。一个很好的例子就是如果我有一个博客,并且用户添加新帖子。

假设用户创建了一个名为

的帖子

我的博文

我有一个方法可以创建一个url SLUG并将其存储在带有该条目的数据库中,所以我想要Url

/我 - 博客 - 岗位

现在网址中没有控制器或密钥名称?我如何通过MVC路由实现这一目标?目前,我正在通过将Url与 / my-blog-post_1234 这样的ID进行匹配,并使用该ID作为数据库查找键,使用流畅的nhibernate,但是当我删除它时,我有点失落ID?

因为我仍然可以获得字符串/ slug,但这意味着我现在必须根据字符串'my-blog-post'进行SQL查找?我已经读过这个效率不高并且可能会影响速度,其中一些标题可能会很长。

我听说有人说自定义路线表吗?这对我有帮助吗?我想主要的是以最快的方式从数据库中获取数据。

非常感谢任何帮助/指针。

2 个答案:

答案 0 :(得分:1)

MVC框架不会在这里提供任何帮助。您的要求是通过slug进行查询,这就是您需要在数据库中执行的操作。

您只需要确保数据库中的此列有索引,以确保查询不需要进行表扫描。

答案 1 :(得分:0)

听起来你真正想要的是一个文档数据库。再加上MVC。我强烈推荐ravendb,