-
Type:
Bug
-
Resolution: Duplicate
-
Priority:
Major - P3
-
None
-
Affects Version/s: 2.2.4
-
Component/s: API, Operations
-
Environment:OS: Windows 10, MongoDB: 3.2.9 (Windows Server 2008 R2 with SSL)
-
None
-
None
-
None
-
None
-
None
-
None
-
None
When trying to add a generic class to the collection, MongoDB CSharp Driver throws an System.AggregateException exception.
System.AggregateException was unhandled by user code
HResult=-2146233088
Message=Mindestens ein Fehler ist aufgetreten.
Source=mscorlib
StackTrace:
bei System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
bei System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
bei System.Threading.Tasks.Task`1.get_Result()
bei Dealz.ProductListing.Data.MongoDb.Repositories.TypedIndexRepository.<>c__1`1.<AddIndexAsync>b__1_0(Task`1 result) in D:\Projekte\CSharp\Dealz\src\Dealz.ProductListing.Data.MongoDb\Repositories\TypedIndexRepository.cs:Zeile 41.
bei System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
bei System.Threading.Tasks.Task.Execute()
InnerException:
HResult=-2146233079
Message={document} is not supported.
Source=MongoDB.Driver
StackTrace:
bei MongoDB.Driver.Linq.Translators.PredicateTranslator.GetFieldExpression(Expression expression)
bei MongoDB.Driver.Linq.Translators.PredicateTranslator.TranslateTypeComparisonQuery(Expression variableExpression, ExpressionType operatorType, ConstantExpression constantExpression)
bei MongoDB.Driver.Linq.Translators.PredicateTranslator.TranslateComparison(BinaryExpression binaryExpression)
bei MongoDB.Driver.Linq.Translators.PredicateTranslator.Translate(Expression node)
bei MongoDB.Driver.Linq.Translators.PredicateTranslator.TranslateAndAlso(BinaryExpression node)
bei MongoDB.Driver.Linq.Translators.PredicateTranslator.Translate(Expression node)
bei MongoDB.Driver.Linq.Translators.PredicateTranslator.Translate(Expression node, IBsonSerializerRegistry serializerRegistry)
bei MongoDB.Driver.Linq.Translators.PredicateTranslator.Translate[TDocument](Expression`1 predicate, IBsonSerializer`1 parameterSerializer, IBsonSerializerRegistry serializerRegistry)
bei MongoDB.Driver.ExpressionFilterDefinition`1.Render(IBsonSerializer`1 documentSerializer, IBsonSerializerRegistry serializerRegistry)
bei MongoDB.Driver.MongoCollectionImpl`1.ConvertWriteModelToWriteRequest(WriteModel`1 model, Int32 index)
bei System.Linq.Enumerable.<SelectIterator>d__5`2.MoveNext()
bei MongoDB.Driver.Core.Operations.BulkMixedWriteOperation.BatchHelper.<FindOrderedRuns>d__8.MoveNext()
bei MongoDB.Driver.Core.Misc.ReadAheadEnumerable`1.ReadAheadEnumerator.MoveNext()
bei MongoDB.Driver.Core.Operations.BulkMixedWriteOperation.BatchHelper.<GetBatches>d__6.MoveNext()
bei MongoDB.Driver.Core.Operations.BulkMixedWriteOperation.<ExecuteAsync>d__39.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei MongoDB.Driver.OperationExecutor.<ExecuteWriteOperationAsync>d__3`1.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei MongoDB.Driver.MongoCollectionImpl`1.<ExecuteWriteOperationAsync>d__61`1.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei MongoDB.Driver.MongoCollectionImpl`1.<BulkWriteAsync>d__22.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei MongoDB.Driver.MongoCollectionBase`1.<ReplaceOneAsync>d__39.MoveNext()
InnerException:
I am using the following Model for the collection
IndexedItem.cs
public class IndexedItem { protected IndexedItem() { } public IndexedItem(string key, string value) { Key = key; Value = value; } public IndexedItem(string key, string value, string displayText) : this(key, value) { DisplayText = displayText; } public string Key { get; set; } public string Value { get; set; } public string DisplayText { get; set; } } public class IndexedItem<T> : IndexedItem { public IndexedItem() : base() { Type = typeof(T).FullName; } public IndexedItem(string key, string value) : this() { Key = key; Value = value; } public IndexedItem(string key, string value, string displayText) : this(key, value) { DisplayText = displayText; } public string Type { get; } }
TypedIndexedItemRepository.cs
public async Task<QueryResult> AddIndexAsync<T>(IndexedItem<T> item, CancellationToken cancellationToken = default(CancellationToken))
{
var indexCollection = productsDatabase.GetCollection<IndexedItem<T>>(IndexCollection);
var result = await indexCollection.ReplaceOneAsync(
i => i.GetType() == typeof(IndexedItem<T>) && i.Key == item.Key,
item,
new UpdateOptions
{
IsUpsert = true
},
cancellationToken: cancellationToken
);
if (result.IsAcknowledged && result.ModifiedCount > 0)
return QueryResult.Success;
return QueryResult.Failed();
}
The idea is to have *one* collection, to hold indexed item for multiple types, i.e. IndexedItem<User> to index the user (i.e. for AutoComplete functionality).
Expected result:
{
"_t": "Dealz.ProductListings.Contracts.Tag, Dealz.ProductListings",
"key" : "tagkey",
"value": "tagname",
"displayText": "Some Name"
}
- duplicates
-
CSHARP-1240 Type name store in the _t field missing generic type argument
-
- Closed
-