Swe*_*ell 2 mongodb c#-4.0 mongodb-.net-driver
我用MongoDb C#Driver 1.4更新了我的项目,我的一个Lambda表达式不再工作了.
在我使用MongoDb C#Driver 1.3.1与Fluent Mongo支持Linq之前.
这是我的方法:
IQueryable<T> IBackend<T>.Get(System.Linq.Expressions.Expression<Func<T, bool>> expression)
{
return collection.AsQueryable<T>().Where(expression);
}
Run Code Online (Sandbox Code Playgroud)
这个lambda表达式有效:
var addedCustomer = repo.Get(c => c.FirstName == "Elwood").SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)
这个现在引发了一个例外:
var updatedCustomer = repo.Get(c => c.Id == customer.Id).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)
抛出的异常消息:
Object reference not set to an instance of an object.
Run Code Online (Sandbox Code Playgroud)
这里更新是我的堆栈跟踪:
MongoDB.Bson.dll!MongoDB.Bson.Serialization.BsonClassMapSerializer.GetMemberSerializationInfo(string memberName) Line 253 + 0x3 bytes C#
MongoDB.Driver.dll!MongoDB.Driver.Linq.SelectQuery.GetSerializationInfoMember(MongoDB.Bson.Serialization.IBsonSerializer serializer, System.Linq.Expressions.MemberExpression memberExpression) Line 962 + 0xc bytes C#
MongoDB.Driver.dll!MongoDB.Driver.Linq.SelectQuery.GetSerializationInfo(MongoDB.Bson.Serialization.IBsonSerializer serializer, System.Linq.Expressions.Expression expression) Line 888 + 0xf bytes C#
MongoDB.Driver.dll!MongoDB.Driver.Linq.SelectQuery.GetSerializationInfo(System.Linq.Expressions.Expression expression) Line 880 + 0xf bytes C#
MongoDB.Driver.dll!MongoDB.Driver.Linq.SelectQuery.BuildComparisonQuery(System.Linq.Expressions.BinaryExpression binaryExpression) Line 433 + 0x1f bytes C#
MongoDB.Driver.dll!MongoDB.Driver.Linq.SelectQuery.BuildQuery(System.Linq.Expressions.Expression expression) Line 768 + 0x37 bytes C#
MongoDB.Driver.dll!MongoDB.Driver.Linq.SelectQuery.BuildQuery() Line 113 + 0xc bytes C#
MongoDB.Driver.dll!MongoDB.Driver.Linq.SelectQuery.Execute() Line 122 + 0x9 bytes C#
MongoDB.Driver.dll!MongoDB.Driver.Linq.MongoQueryProvider.Execute(System.Linq.Expressions.Expression expression) Line 147 + 0xb bytes C#
MongoDB.Driver.dll!MongoDB.Driver.Linq.MongoQueryProvider.Execute<Lion.Tools.Tests.Backends.Entities.Customer>(System.Linq.Expressions.Expression expression) Line 131 + 0xc bytes C#
[External Code]
Lion.Tools.Tests.dll!Lion.Tools.Tests.Backends.MongoDbBackendTests.MongoDb_Can_Add_Select_And_Update_Test() Line 79 + 0x27f bytes C#
[External Code]
Run Code Online (Sandbox Code Playgroud)
什么出错了?
谢谢
1.4版本的C#驱动程序中存在一个错误,它会影响对继承属性的LINQ查询:
https://jira.mongodb.org/browse/CSHARP-418
这已在主分支中修复,修复将在1.4.1版本中,我们计划很快发布.