У меня есть модель с столбцом в базе данных, определяемой как 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), я сталкиваюсь Объект.
Что я проверил
[*] JSON, хранящийся в базе данных, действителен и Desorialize Deserialized Owning EF Core
[*] workflow json включает в себя non-null blocks
[*] rakeflow json> nunull blocks
. Элементы < /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
Картирование столбцов JSON - навигационное свойство выбрасывает NullReferenceException ⇐ C#
Место общения программистов C#
1754138054
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();
});
});
});
});
}
}
[b] Проблема [/b]
Когда я пытаюсь запрашивать свойство Blocks (например, с использованием. Any () в выражении LINQ), я сталкиваюсь Объект.
[b] Что я проверил [/b]
[*] JSON, хранящийся в базе данных, действителен и Desorialize Deserialized Owning EF Core
[*] workflow json включает в себя non-null blocks
[*] rakeflow json> nunull blocks
. Элементы < /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();
Подробнее здесь: [url]https://stackoverflow.com/questions/79722731/json-column-mapping-navigation-property-throws-nullreferenceexception[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия