chu*_*nce 6 c# mongodb mongodb-.net-driver
如果我在这里使用错误的术语,我很抱歉.我仍然非常喜欢ORM世界,但我一直在玩MongoDb并且非常喜欢我所看到的.我不喜欢的一件事是这样的:
var books = bookRepository.GetCollection<BsonDocument>("books");
和
foreach (var book in books.FindAllAs<Book>())
{
    Console.WriteLine("Author: {0}, Title: {1}", book.Author, book.Title);
}
我在会话中找到了几个关于包装NoRM的教程,但我无法弄清楚如何使用CSharp驱动程序(Mongodb推荐/在其github页面上使用的那些).
对于第一个例子,我真正想做的是这样的事情:
var bookRepository = MongoRepository<Book>(); // probably should use IoC to resolve this
和
foreach (var book in books.FindAll())
瞧!我可能不是第一个想要这个的人,到处使用字符串看起来有点疯狂,不过我会认为教程只是一个例子.是否有"最佳实践"示例以这种方式设置这一切?
编辑:如果这是疯狂的谈话而不是如何在Mongo做事,请告诉我,这是我的第一个测试项目.
这是我项目的片段:
public static MongoCollection<T> GetCollection<T>(string collectionName = null)
{
    if (string.IsNullOrWhiteSpace(collectionName))
    {
        Type g = typeof (T);
        collectionName = g.Name;
    }
    return MongoServer.Create(Config.MongoConnectionString).GetDatabase(Config.Database).GetCollection<T>(collectionName);
}
现在我不需要将集合名称指定为字符串,除非我想覆盖它:
var collection = GetCollection<MyEntity>();
要么
var collection = GetCollection<MyEntity>("SomeOtherCOllection");
如果需要,可以使用一些inflection实用程序\库来复数化您的集合名称.
此外,Find如果在实例化集合类时指定了类型,则不需要在方法中指定类型,就像我上面所说的那样.
例如,我就是这样做的:
MongoCursor<MyEntity> results = collection.FindAll();
要么
MongoCursor<MyEntity> results = collection.Find(query);
| 归档时间: | 
 | 
| 查看次数: | 1035 次 | 
| 最近记录: |