使用相同端点/控制器的多个实体类型

时间:2013-07-12 12:51:21

标签: c# asp.net-mvc-4 asp.net-web-api asp.net-mvc-routing ravendb

我在我的应用程序中使用RavenDB,默认情况下,文档的id看起来像这样:

homes/1 

其中homes是类Home的集合类型名称。如果我创建一个名为Blog的新类,我将得到一个像:

的id
blogs/1 

现在,HomeBlog都是我的CMS中的页面,我希望homes/1blogs/1都使用PageController。那么,是否可以使用约束或类似的东西来执行此操作,因为PageController端点只处理继承特定类的类型是很重要的?

1 个答案:

答案 0 :(得分:0)

您有两种不同的选择。

如果它是PagesController,并且用户正在执行创建和编辑页面等对象,那么HomeBlog可能不应该有两个单独的实体类型。应该只有一个Page类。它可以有PageType属性来区分它们,但它们可能不需要是单独的对象。如果采用这种方法,RavenDB中的文档将使用pages/1等键。

如果明显不同的字段,那么你可能有HomeBlog类,但它们都应该继承自Page类和任何共同的属性应该去那里。如果采用这种方法,您仍然可以使用homes/1blogs/1等密钥在RavenDB中获取文档。您可能希望查看RavenDB中多态性的this page。使用这种方法,您可能仍需要PagesController,或者您可能需要单独的HomePagesControllerBlogPagesController,具体取决于您的需求。