хранить сложный объект в БД, используя dapper - PullRequest
0 голосов
/ 06 февраля 2020

Итак, я пытаюсь сохранить запись в базе данных, используя dapper. Я передаю объект методу, в котором у меня есть запрос на сохранение записи. Позвольте мне быть более ясным. Ниже моя модель:

public class Foo
{
 public long FooId { get; set; }
 public Guid Foo2ID { get; set; }
 public string Status { get; set; }
 public Person Person { get; set; } = new Person();
}

public class Person
{
  public string Type { get; set; }
  public string Character { get; set; }
  public DateTime Test { get; set; }
}

И это мой запрос:

public async Task<ActionResult> Create(Foo f)
    {
        using (var connection = _dbAccess.CreateConnection())
        {
            var sqlStatement = @"
            INSERT INTO ReportRequests 
              (FooId
              ,Foo2Id
              ,Person
              ,Status)
                VALUES 
                    (@FooId
                    @,Foo2Id
                    @,Person
                    @,Status)";
            await connection.ExecuteAsync(sqlStatement, f);

        };

        return Ok();
    }

Я пытаюсь сохранить json в Персона столбец в базе данных. Но я получаю эту ошибку:

Член x типа x не может использоваться в качестве значение параметра

Может кто-нибудь подсказать, пожалуйста, как я могу подойти к этой проблеме. Это было бы очень полезно.

Большое спасибо :)

1 Ответ

0 голосов
/ 06 февраля 2020

enter code here Прежде всего, вы должны подумать, можете ли вы использовать LINQ-подобные запросы с dapper. Это делает его более читабельным и позволяет избежать подобных проблем.

Возвращаясь к вашей проблеме, из кода, который вы разместили, похоже, что вы поставили комы после символа @ @,Foo2Id:

                    (@FooId
                    @,Foo2Id
                    @,Person
                    @,Status)

Это должно быть:

                   (@FooId
                    @Foo2Id,
                    @Person,
                    @Status)
...