public class Root {
public ReferenceNumber Ref { get; set; }
}
public readonly record struct ReferenceNumber
{
private readonly string _referenceNumber;
public ReferenceNumber(in string referenceNumber)
{
_referenceNumber = referenceNumber.Trim();
}
public static implicit operator ReferenceNumber(in string value) =>
new(value);
public static implicit operator string(in ReferenceNumber reference) =>
reference._referenceNumber;
public override string ToString() => _referenceNumber;
}
< /code>
Когда я пытаюсь сделать запрос на корне, как это < /p>
await using IDocumentSession session = _readDocumentStore.LightweightSession();
return await session.Query()
.FirstOrDefaultAsync(x => x.ReferenceNumber == referenceNumber);
< /code>
Я получаю исключение, которое понятно < /p>
Мартен не может поддерживать пользовательские типы значений в выражении LINQ. Пожалуйста, запросите либо на простые свойства типа значения, либо зарегистрируйте пользовательский imembersource для этого типа значения. < /P>
< /blockquote>
Я искал пример реализации Imemberource < /code>, но даже Google дал мне только 3 результата.
Документация предлагает обсудить больше на канале Discord, и не предоставит информацию о IMEMBERAR. Помощь Copilot, вот реализация, которая дала мне < /p>
public class QueryableMember : IQueryableMember
{
public string JsonPathSegment { get; set; }
public string MemberName { get; set; }
public Type MemberType { get; set; }
public Type DeclaringType { get; set; }
public string Name { get; set; }
public bool IsAsync { get; set; }
public MemberInfo MemberInfo { get; set; }
public IQueryableMember Parent { get; set; }
public string TypedLocator => $"CAST({RawLocator} as text)";
public string RawLocator => $"d.data -> {SqlFragment()}";
public string JSONBLocator => $"d.data ->> {SqlFragment()}";
public IQueryableMember[] Ancestors => Parent == null ? [] : [.. Parent.Ancestors, Parent];
public string LocatorForIncludedDocumentId => $"d.data ->> {SqlFragment()}";
public string NullTestLocator => $"d.data -> {SqlFragment()} IS NULL";
private string SqlFragment()
{
return $"'{JsonPathSegment}'";
}
public void Apply(ICommandBuilder builder)
{
builder.Append(JSONBLocator);
}
public string BuildOrderingExpression(Ordering ordering, CasingRule casingRule)
{
string direction = ordering.Direction == OrderingDirection.Asc ? "asc" : "desc";
return $"{JSONBLocator} {direction}";
}
public Dictionary FindOrPlaceChildDictionaryForContainment(Dictionary dict)
{
if (!dict.TryGetValue(JsonPathSegment, out object? value))
{
value = new Dictionary();
dict[JsonPathSegment] = value;
}
return value as Dictionary;
}
public void PlaceValueInDictionaryForContainment(Dictionary dict, ConstantExpression constant)
{
// For ReferenceNumber, convert to string using ToString()
string value = constant.Value?.ToString() ?? string.Empty;
dict[JsonPathSegment] = value;
}
public string SelectorForDuplication(string pgType)
{
return $"{RawLocator} {pgType}";
}
}
public class ReferenceNumberMemberSource : IMemberSource
{
public bool TryResolve(
IQueryableMember parent,
StoreOptions options,
MemberInfo memberInfo,
Type memberType,
[NotNullWhen(true)] out IQueryableMember? member)
{
member = new QueryableMember
{
Parent = parent,
DeclaringType = memberInfo.DeclaringType!,
MemberType = memberType,
Name = memberInfo.Name,
MemberName = memberInfo.Name,
MemberInfo = memberInfo,
IsAsync = false,
JsonPathSegment = $"$.{memberInfo.Name}",
};
return true;
}
}
I have no idea if this is good or not, but when I register the IMemberSource, start the Application, I got an exception
Id of type System.Guid cannot be used as a Duplicated Field by Marten (Parameter 'members')
I do not understand why this Исключение происходит, но в целом мой случай простой:
У меня есть такой объект (упрощенный) < /p> [code]public class Root { public ReferenceNumber Ref { get; set; } }
public readonly record struct ReferenceNumber { private readonly string _referenceNumber; public ReferenceNumber(in string referenceNumber) { _referenceNumber = referenceNumber.Trim(); }
public static implicit operator ReferenceNumber(in string value) => new(value);
public static implicit operator string(in ReferenceNumber reference) => reference._referenceNumber;
public override string ToString() => _referenceNumber; }
< /code> Когда я пытаюсь сделать запрос на корне, как это < /p> await using IDocumentSession session = _readDocumentStore.LightweightSession(); return await session.Query() .FirstOrDefaultAsync(x => x.ReferenceNumber == referenceNumber); < /code> Я получаю исключение, которое понятно < /p>
Мартен не может поддерживать пользовательские типы значений в выражении LINQ. Пожалуйста, запросите либо на простые свойства типа значения, либо зарегистрируйте пользовательский imembersource для этого типа значения. < /P> < /blockquote> Я искал пример реализации Imemberource < /code>, но даже Google дал мне только 3 результата. Документация предлагает обсудить больше на канале Discord, и не предоставит информацию о IMEMBERAR. Помощь Copilot, вот реализация, которая дала мне < /p> public class QueryableMember : IQueryableMember { public string JsonPathSegment { get; set; } public string MemberName { get; set; } public Type MemberType { get; set; } public Type DeclaringType { get; set; } public string Name { get; set; } public bool IsAsync { get; set; } public MemberInfo MemberInfo { get; set; } public IQueryableMember Parent { get; set; }
public string TypedLocator => $"CAST({RawLocator} as text)"; public string RawLocator => $"d.data -> {SqlFragment()}"; public string JSONBLocator => $"d.data ->> {SqlFragment()}"; public IQueryableMember[] Ancestors => Parent == null ? [] : [.. Parent.Ancestors, Parent]; public string LocatorForIncludedDocumentId => $"d.data ->> {SqlFragment()}"; public string NullTestLocator => $"d.data -> {SqlFragment()} IS NULL";
public Dictionary FindOrPlaceChildDictionaryForContainment(Dictionary dict) { if (!dict.TryGetValue(JsonPathSegment, out object? value)) { value = new Dictionary(); dict[JsonPathSegment] = value; }
return value as Dictionary; }
public void PlaceValueInDictionaryForContainment(Dictionary dict, ConstantExpression constant) { // For ReferenceNumber, convert to string using ToString() string value = constant.Value?.ToString() ?? string.Empty; dict[JsonPathSegment] = value; }
public string SelectorForDuplication(string pgType) { return $"{RawLocator} {pgType}"; } }
public class ReferenceNumberMemberSource : IMemberSource { public bool TryResolve( IQueryableMember parent, StoreOptions options, MemberInfo memberInfo, Type memberType, [NotNullWhen(true)] out IQueryableMember? member) { member = new QueryableMember { Parent = parent, DeclaringType = memberInfo.DeclaringType!, MemberType = memberType, Name = memberInfo.Name, MemberName = memberInfo.Name, MemberInfo = memberInfo, IsAsync = false, JsonPathSegment = $"$.{memberInfo.Name}", };
return true; } } [/code] I have no idea if this is good or not, but when I register the IMemberSource, start the Application, I got an exception
Id of type System.Guid cannot be used as a Duplicated Field by Marten (Parameter 'members')
I do not understand why this Исключение происходит, но в целом мой случай простой: [code]ReferenceNumber[/code] инкапсулирует строку, и я хочу рассматривать ее как строку при запросе. Вот и все, что больше..
У меня есть два отдельных класса: Baum.cs (дерево) и BaumArt.cs (виды деревьев). Хотя по сути все значения BaumArt являются подмножеством Baum, для упрощения они выделены в другой класс. Необходимо правильно построить структуры и связать их, а также...
Я пытаюсь активировать SnapShot и мягкое удаление для агрегата в базе данных marten. и когда я запускаю проект, я получаю ошибку времени выполнения: «AggregateProjection не может поддерживать обратимо удаленные агрегаты».
.net версия: 8
Версия...
Я пытаюсь внедрить на своем веб-сайте CKEditor, позволяющий загружать изображения, но он не работает. Сервер не получает файлы.
Это редактор в представлении
ClassicEditor
.create( document.querySelector( '#contenido_en' ), {
simpleUpload: {
// The...
Я пытаюсь реализовать NEAT в очень простой бесконечной игре-раннере. Я создал игру по учебнику Pygame ( ZV8TNrwqG1Y ). Хотя я внес немало изменений, основная игра осталась прежней. Это простая 2D-игра с бесконечным раннером, в которой вы можете...
tl; dr
Я знаю, что означает стирание типа в контексте C ++ (например, я могу реализовать игрушечную версию STD :: Любой сам), но это, кажется, совершенно иначе, чем экрас типа , как предполагается в теории типа (по крайней мере, в «Типах и...