是否可以将ExpandoObject作为RavenDB中的其他类型存储?

时间:2015-02-10 16:47:45

标签: c# ravendb

据我所知,ravendb使用对象的CLR类型来确定Raven-Entity-Name元数据。例如,保存Spoon类型的对象将导致创建Spoon文档并将其添加到raven服务器上的勺子集合中。

下面是几个简单的例子来帮助解释我的意思。

这会将项目存储在' ExpandoObjects'集合

dynamic item1 = new ExpandoObject();

item1.Id = "item/100"
item1.Cost = "£10";
item1.Color = "Silver";
//other properties relevant to the item being created

using (var session = this.documentStore.OpenSession()) 
{
    session.Store(item1);
    session.SaveChanges();
}

这会将项目存储在'项目'系列:

Item item2 = new Item();

item2.Id = "item/101";
item2.Name = "Postcard";
item2.Cost = "£1";
item2.Material = "Card";

using (var session = this.documentStore.OpenSession()) 
{
    session.Store(item2);
    session.SaveChanges();
}

第一个代码块会将项目存储为ravendb中的ExpandoObject。但我想要的行为是乌鸦将它作为项目存储,以及我的强类型项目,如第二个代码块所示。

有没有办法配置DocumentStore,以便它将Id字段的左侧部分用作Raven-Entity-Name,而不是ExpandoObject CLR类型?或者这样的事情不可能吗?

提前致谢。

0 个答案:

没有答案