c# Mongdb.Dynamic Method Missing Exception with upsert()



我正在编写一个asp.net MVC4应用程序。我有几个DAO接口和DTO类,并且希望将这些类的实例插入到我的mongo数据库中。

我在控制台应用程序中尝试了以下操作,结果成功了:

Dynamic.Config.SetKeyName<IInventorySystem>(i => i.Id);
        Dynamic.Config.SetIndex<IInventorySystem>("idx_invSystem", false, i => i.Name);
        Dynamic.Config.SetKeyName<IContainer>(c => c.Id);
        Dynamic.Config.SetIndex<IContainer>("idx_Container", false, i => i.Name);
        Dynamic.Config.LoadCollection<IInventorySystem,IContainer>(i=>i.Containers,c=>c.InventorySystemId);
        Dynamic.Config.LoadFK<IContainer,IInventorySystem>(c=>c.InventorySystem,c=>c.InventorySystemId);
        Dynamic.Configure();
        var invSystems = Dynamic.GetCollection<IInventorySystem>();
        var containers = Dynamic.GetCollection<IContainer>();
        var invSystem = invSystems.New();
        invSystem.Name = "bla";
        invSystems.Upsert(invSystem);

然而,MVC控制器中的相同代码不起作用,我查看了以下错误:

"Method not found: 'MongoDB.Driver.SafeModeResult MongoDB.Driver.MongoCollection`1.Insert(System.__Canon)'."}

为进一步隔离问题而采取的方法不成功

  • 实例化DAO并对其属性的值进行硬编码,以消除从html表单绑定可能导致的问题。

  • 使用impromptuInterface生成代理,然后在保存代理之前设置其属性,以消除DTO问题请参阅:http://mongodbdynamic.codeplex.com/documentation

  • 将Dependency注入添加到项目中,而不是为DatabaseContext使用静态对象,以防止由于MVC应用程序与单线程控制台应用程序的工作方式不同而可能发生的垃圾收集/线程问题

与数据库的连接作品集合已创建,但无法保存在mvc4应用程序中。

研究

在我的研究中,我发现了许多缺失的方法问题,但没有一个与mongodb.dynamic有关在寻找mongodb c#驱动程序的问题时也会发现类似的问题,但这些问题也不完全相同

为什么MongoDB而不是关系数据库因为我想稍后向某个DTO添加一个键值对字典。但最好先把基础知识做好。

最后,感谢您阅读到最后,如果有任何帮助,我们将不胜感激,或者为mongo提供一个与mvc兼容的不同方案。

版本信息

MongoDb动态(与nuget一起安装)-1.1.1版本MongoDb官方C#驱动程序(与nuget一起安装)1.10.0版

MongoDB。Dynamic已经有3年没有更新了。这取决于旧版本的驱动程序。mongocsharpdriver在其1.x系列中没有使用semver,因此使用1.10版本的驱动程序中没有MongoDB.Dynamic.使用的方法

最新更新