【问题标题】:FluentMongo throwing error all of a suddenFluentMongo 突然抛出错误
【发布时间】:2011-11-08 18:51:26
【问题描述】:

我正在使用 FluentMongo 和 MongoDBCSharpDriver。我的代码在一段时间内运行良好,但在更新了 MongoCSharpDriver 后,我现在在尝试查询数据库时不断收到此错误:

“只能为类注册判别器,不能为接口 MyLib.Services.IRepoData 注册。”

IRepoData 接口只是我用于保存到 MongoDB 的所有对象的接口。它只是为所有东西定义了 _id。这是中断的行:

var item = Collection.AsQueryable().SingleOrDefault(a => a.Id == itemID);

任何人都可以对此有所了解吗?如果我只使用没有 lambda 的 .SingleOrDefault(),那么它工作正常,它传递了一个破坏它的 lambda。

编辑

如果这有帮助...

var Collection = GetCollection<MyClass>();

private MongoCollection<T> GetCollection<T>() where T : class, new()
{
    string typeName = typeof(T).Name;
    var collection = db.GetCollection<T>(typeName, safeMode);
    return collection;
}

【问题讨论】:

    标签: mongodb mongodb-.net-driver fluent-mongo


    【解决方案1】:

    找到了!我在另一个通用方法中调用 GetCollection(),如下所示:

    public T Save<T>(T item) where T : class, IRepoData, new()
    {
        GetCollection<T>().Save(item);
    }
    

    这导致 GetCollection 将 T 视为接口而不是实际的实例类。 GetCollection 在其他任何地方都可以正常工作。

    对于遇到此问题的其他人,我只是使用了这样的低级查询...Collection.FindOneAs&lt;T&gt;(Query.EQ("Id", itemID.ToString()));

    【讨论】:

      猜你喜欢
      • 2021-07-02
      • 2022-01-14
      • 2021-09-10
      • 2015-02-23
      • 2017-01-09
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多