我在应用程序中使用RavenDB,默认情况下,文档的id如下所示:
homes/1
其中CCD_ 1是类别CCD_ 2的集合类型名称。如果我创建一个名为Blog
的新类,我最终会得到一个id,比如:
blogs/1
现在,Home
和Blog
都是我的CMS中的页面,我希望homes/1
和blogs/1
都使用PageController
。那么,是否可以使用约束或类似的东西来实现这一点,因为PageController
端点只处理继承特定类的类型很重要?
您有两个不同的选项。
如果它是homes
0,并且用户正在执行创建和编辑页面之类的对象,那么Home
和Blog
可能不应该有两个单独的实体类型。应该只存在一个Page
类。它可以具有PageType
属性来区分它们,但它们可能不需要是单独的对象。如果您采用这种方法,您将在RavenDB中拥有具有pages/1
等密钥的文档。
如果有明显不同的字段,那么您可能有一个Home
和Blog
类,但它们都应该继承自Page
类,并且任何共同的属性都应该在那里。如果您采用这种方法,您仍然可以在RavenDB中获得密钥为homes/1
和Home
0的文档。您可能想看看RavenDB中多态性的页面。使用这种方法,您可能仍然需要PagesController
,或者根据需要需要需要单独的HomePagesController
和BlogPagesController
。