-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Minor - P4
-
None
-
Affects Version/s: None
-
None
-
None
-
Dotnet Drivers
-
None
-
None
-
None
-
None
-
None
-
None
For example:
var results = context.Set<Employee>() .Select(e => EF.Property<string>(e, "Title")) .ToList();
Throws:
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object. at MongoDB.EntityFrameworkCore.Query.Visitors.MongoProjectionBindingExpressionVisitor.MatchTypes(Expression expression, Type targetType) at MongoDB.EntityFrameworkCore.Query.Visitors.MongoProjectionBindingExpressionVisitor.Translate(MongoQueryExpression queryExpression, Expression expression) at MongoDB.EntityFrameworkCore.Query.Visitors.MongoQueryableMethodTranslatingExpressionVisitor.TranslateSelect(ShapedQueryExpression source, LambdaExpression selector) at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) at MongoDB.EntityFrameworkCore.Query.Visitors.MongoQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) at MongoDB.EntityFrameworkCore.Query.Visitors.MongoQueryableMethodTranslatingExpressionVisitor.Visit(Expression expression) at MongoDB.EntityFrameworkCore.Query.MongoQueryCompilationContext.CreateQueryExecutor[TResult](Expression originalQuery) at Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](Expression query, Boolean async) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass11_0`1.<ExecuteCore>b__0() at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func`1 compiler) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteCore[TResult](Expression query, Boolean async, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.Execute[TResult](Expression query) at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.Execute[TResult](Expression expression) at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1.GetEnumerator() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at Program.<Main>$(String[] args) in /Users/arthur.vickers/code/OnYourOwnNow/OnYourOwnNow/Program.cs:line 19
Full repro
using var context = new SomeDbContext(); context.Database.EnsureDeleted(); context.AddRange( new Employee { EmployeeID = 10, City = "Walpole", ReportsTo = 1, Country = "UK", FirstName = "Baxter", Title = "Sales Representative" }); context.SaveChanges(); var results = context.Set<Employee>() .Select(e => EF.Property<string>(e, "Title")) .ToList(); foreach (var result in results) { Console.WriteLine($"Found {result}"); } public class SomeDbContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder .UseMongoDB("mongodb://localhost:27017", "SomeDb2") .LogTo(Console.WriteLine, LogLevel.Information); protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Employee>().ToCollection("Employees"); } } public class Employee { public int EmployeeID { get; set; } [MaxLength(10)] [Required] public string FirstName { get; set; } [MaxLength(30)] public string Title { get; set; } [MaxLength(15)] public string City { get; set; } [MaxLength(15)] public string Country { get; set; } public int? ReportsTo { get; set; } }
- depends on
-
EF-76 Select projection rewriting
-
- Ready for Work
-