Details
-
Bug
-
Resolution: Cannot Reproduce
-
Major - P3
-
None
-
2.7.0
-
None
-
Windows 10, x64.
Description
I use polymorphism and have the following objects:
public abstract class Entity : IEntity |
{
|
[BsonId]
|
[BsonIgnoreIfDefault]
|
[BsonRepresentation(BsonType.ObjectId)]
|
public string Id { get; set; } |
[BsonIgnore]
|
public abstract string CollectionName { get; } |
}
|
[BsonDiscriminator(Required = true, RootClass = true)] |
[BsonKnownTypes(typeof(LifeAccount), typeof(SimAccount))]
|
public class Account2 : Entity |
{
|
public string Name { get; set; } |
public string UserId { get; set; } |
public DateTime CreatedAt { get; set; } |
public DateTime? LastLoginAt { get; set; } |
public override string CollectionName { get; } = "Accounts"; |
}
|
public class LifeAccount : Account2 |
{
|
public string ConsumerKey { get; set; } |
public string ConsumerSecret { get; set; } |
}
|
|
|
public class SimAccount : Account2 |
{
|
public decimal TransactionFee { get; set; } |
public decimal NetAssets { get; set; } |
}
|
Then, I make query with `OfType` and `Project`:
private readonly IMongoCollection<Account2> _accountCollection; |
...
|
var projectDef = Builders<LifeAccount>.Projection
|
.Include(a => a.Name)
|
.Include(a => a.ConsumerKey)
|
.Include(a => a.ConsumerSecret);
|
|
|
var account = await _accountCollection.OfType<LifeAccount>().Find(a => a.Id == accountId)
|
.Project<LifeAccount>(projectDef)
|
.SingleOrDefaultAsync();
|
I get error:
"Element 'ConsumerKey' does not match any field or property of class Trader.Domain.Account2."
If I delete `Project` then all works fine.