Базовый журнал репозитория

#c# #database #logging #base

#c# #База данных #ведение журнала #основание

Вопрос:

 public void LogAdd(string processName, T item, List<T> items)
    {
        try
        {
            LogInfo entity = new LogInfo();
            entity.ProcessName = processName;
            if (item != null)
                entity.Data = new JsonSerializer().Serialize(item);
            else if(items.Count!=0)
                entity.Data = new JsonSerializer().Serialize(items);
            entity.CreateDate = System.DateTime.Now;
            Context.Set<LogInfo>().Add(entity);
            Context.SaveChanges();
        }
        catch (Exception exp)
        {

        }
    }
  

Но entity.Data = new JsonSerializer().Serialize(item); выдает исключение. Исключение составляет:

«Необработанное исключение типа ‘System.В неизвестном модуле произошло исключение StackOverflowException».

Я хочу преобразовать переменную таблицы базы данных в json? Или другое решение для меня.

Ответ №1:

Вы можете сериализовать с помощью Newtonsoft JsonConvert.SerializeObject

 public void LogAdd(string processName, T item, List<T> items)
{
    try
    {
        LogInfo entity = new LogInfo();
        entity.ProcessName = processName;
        if (item != null)
            entity.Data = JsonConvert.SerializeObject(item);
        else if(items.Count!=0)
            entity.Data = JsonConvert.SerializeObject(items);
        entity.CreateDate = System.DateTime.Now;
        Context.Set<LogInfo>().Add(entity);
        Context.SaveChanges();
    }
    catch (Exception exp)
    {

    }
}