Entity Framework выдает ошибку -Неверное имя столбца «Id». \ R \ n Недопустимое имя столбца «Id». " - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть следующий входящий JSON:

  {
    "SampleNumber": "1605",
    "Status": 2,
    "HasPossibleDuplicate": false,
    "ControlType": 1
  }

Это мой класс:

  public partial class MyMessage: BaseEntity
  {
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [JsonProperty("SampleNumber", Required = Required.Always)]
    public string SampleNumber { get; set; }

    [JsonProperty("Status", Required = Required.Always)]
    public string Status { get; set; }

    [JsonProperty("HasPossibleDuplicate", Required = Required.Always)]
    public bool HasPossibleDuplicate { get; set; }

  }

Базовый объект:

public partial class BaseEntity
{
    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public DateTime? Created { get; set; }

    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public DateTime? Updated { get; set; }
}

Это мой код дляпроанализировать входящий JSON и сохранить в соответствующей таблице.

    MyMessage message = DeserializeObject.FromJson(jsondata);
    if (message != null)
    {
     using (var transaction = myContext.Database.BeginTransaction())
     {
       myContext.MyMessage.Add(message);//error comes here
       myContext.SaveChanges();
       transaction.Commit();
     }
    }

Я получаю следующее исключение:

"Недопустимое имя столбца« HasPossibleDuplicate ». \ r \ nНеверное имя столбца« Id ». \ r \ nНеверное имя столбца 'Id'. "

1 Ответ

0 голосов
/ 25 февраля 2019

Свойство Id отсутствует в вашем JSON и требуется в вашем классе сущностей базы данных.Вы можете создать отдельный класс (DTO) для ваших данных json и десериализовать JSON во вновь созданный класс.

public class MessageDto
{
    public string SampleNumber { get; set; }     
    public string Status { get; set; }     
    public bool HasPossibleDuplicate { get; set; }
    public int ControlType { get; set; }
}
MessageDto dto = JsonConvert.DeserializeObject<MessageDto>(jsonData);

if (dto != null) {
    MyMessage message = new MyMessage();
    message.SampleNumber = dto.SampleNumber;
    message.Status = dto.Status;
    message.HasPossibleDuplicate = dto.HasPossibleDuplicate;
    message.ControlType = dto.ControlType;

    using (var transaction = myContext.Database.BeginTransaction())
     {
       myContext.MyMessage.Add(message);//error comes here
       myContext.SaveChanges();
       transaction.Commit();
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...