我的域类如下:
public class Author
{
public int Id { get; set; }
public string Name { get; set; }
public IList<Post> Posts { get; set; }
}
public class Blog
{
public int Id { get; set; }
public string Name { get; set; }
public IList<Post> Posts { get; set; }
}
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public Author Author { get; set; }
public Blog Blog { get; set; }
}
如您所见,我绝对没有实体框架注释的任何数据注释或属性,并且我使用实体框架fluent api为每个类配置实体框架相关注释。 现在我想用MangoDb替换实体框架。
但是在mongo db中我需要在列表中放置一个属性,如下所示:
public class Author
{
[BsonElement("_id")]
[BsonRepresentation(BsonType.ObjectId)]
public int Id { get; set; }
public string Name { get; set; }
public IList<Post> Posts { get; set; }
}
我的问题是,在其他课程之外是否有任何方式进行此配置,并且不要像我们在实体框架中流畅的api那样使用我的poco课程。
答案 0 :(得分:0)
基本上,您可以同时使用EntityFramework和MongoDB驱动程序属性。但我不建议您使用与EntityFramework中使用的完全相同的数据结构,因为SQL和NoSQL是完全不同的方法。使用NoSQL,您应该更多地考虑应用程序如何使用数据并创建域,选择最佳嵌入策略并相应地应用索引。
您可以在MongoDB网站上找到一些好的阅读材料。以下是一些开始的链接:
http://docs.mongodb.org/manual/core/data-model-design/
http://docs.mongodb.org/manual/core/data-modeling-introduction/
答案 1 :(得分:0)
您可以使用BsonClassMap类来完成此操作,如:
BsonClassMap.RegisterClassMap<Post>(cm =>
{
cm.MapMember(x => x.Title).SetElementName("_title");
});
文档在这里:Mapping Classes
还有默认约定,对于 Id 字段,您不需要将其映射到 _id 名称,它将自动处理。