Картирование столбцов JSON - навигационное свойство выбрасывает NullReferenceExceptionC#

Место общения программистов C#
Ответить
Anonymous
 Картирование столбцов JSON - навигационное свойство выбрасывает NullReferenceException

Сообщение Anonymous »

У меня есть модель с столбцом в базе данных, определяемой как nvarchar (max) и хранение данных JSON. Ранее мы рассматривали это как простую строку в нашей сущности C#, но теперь я пытаюсь воспользоваться преимуществами картирования картирования столбцов EF Core 8, чтобы десериализировать его непосредственно в сильно напечатанный объект.public class WorkFlow
{
public WorkFlow()
{
Blocks = new List();
Connections = new List
();
}

[JsonPropertyName("workFlowId")]
public Guid WorkFlowId { get; set; }

[JsonPropertyName("blocks")]
public List Blocks { get; set; }

[JsonPropertyName("connections")]
public List Connections { get; set; }
}
< /code>
ef core 8 Конфигурация сопоставления: < /p>
public class LogicPointWorkFlowDetailConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder entity)
{
entity.OwnsOne(w => w.WorkFlow, navBuilder =>
{
navBuilder.ToJson();

navBuilder.OwnsMany(x => x.Connections, connectionsBuilder =>
{
connectionsBuilder.ToJson();
});

navBuilder.OwnsMany(x => x.Blocks, blocksBuilder =>
{
blocksBuilder.ToJson();

blocksBuilder.OwnsOne(b => b.View, viewBuilder =>
{
viewBuilder.ToJson();

viewBuilder.OwnsMany(x => x.PortInputs, portBuilder =>
{
portBuilder.ToJson();
});

viewBuilder.OwnsMany(x => x.PortOuts, portBuilder =>
{
portBuilder.ToJson();
});
});
});
});
}
}

Проблема
Когда я пытаюсь запрашивать свойство Blocks (например, с использованием. Any () в выражении LINQ), я сталкиваюсь object.

What I've verified

[*]The JSON stored in the database is valid and deserializes correctly outside EF Core
Every WorkFlow JSON includes a non-null blocks array with valid Элементы < /li>
Модель и картирование EF, по -видимому, соответствуют структуре JSON < /li>
< /ul>
Вопросы < /strong> < /p>

- это известное ограничение или ошибку с EF Core 8 Support Json World? .Ownsmany () < /code> или как я структурирую вложенное картирование JSON? LogicPointWorkflowDetails Где есть столбец Workflow , и он работает. Я вижу свой рабочий процесс правильно опустошенной. var activeDetails = await ctx.LogicPointWorkFlowDetails
.Where(x => x.Status == Lms.UnifiedContextDb.Models.Enums.WorkFlowStatus.Active)
.ToListAsync();

, если я попытаюсь выполнить. any () в свойстве блоков рабочего процесса, я получаю исключение.var activeDetails1 = await ctx.LogicPointWorkFlowDetails
.Where(x => x.Status == Lms.UnifiedContextDb.Models.Enums.WorkFlowStatus.Active)
.Where(x => x.WorkFlow != null
&& x.WorkFlow.Blocks != null
&& x.WorkFlow.Blocks.Any(g => g.LogicPointWorkFlowBlockId != null
&& blockIds.Contains(g.LogicPointWorkFlowBlockId)))
.Select(x => x.WorkFlow)
.ToListAsync();


Подробнее здесь: https://stackoverflow.com/questions/797 ... eexception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»