Как использовать Dapper с Dommel и FluentMap для вставки записи в таблицу, у которой нет ключа?

Я создаю службу в моей API , который использует щеголеватый с Dommel и FluentMap . База данных - это Microsoft SQL Server. У меня есть конечная точка, которой нужно вставить запись в таблицу, у которой нет ключа. Таблица описана следующим образом:

      public class MyTable
{ 
    public int SomeProperty{ get; set; }
    public int AnotherProperty{ get; set; }
}

В этой таблице есть только эти два столбца в базе данных. Нет ключа.

Я хочу использовать Dapper с Dommel, если это возможно, чтобы вставить запись в эту таблицу.

Я уже создал карты и зарегистрировал их, все в порядке и работает для других таблиц, у которых есть ключ. Но этого нет.

Каждый раз, когда звонят Доммел InsertAsync метод, я получил это сообщение об ошибке:

сбой: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware Необработанное исключение произошло при выполнении запроса. System.InvalidOperationException: не удалось найти ключевые свойства для типа MyProject.Models.MyTable.

Уже известно, что можно использовать только Dapper и вручную создать SQL-запрос и 4выполнить его .

Спрашиваю, есть ли решение с Доммелом.

Заранее спасибо.

1 ответ

Решение

Вам нужно указать ключ. ORM требуются ключи, чтобы они знали, какую строку нужно вставить, удалить или обновить. ORM просто не может работать без ключей. Dommel - это не генератор SQL, он работает с Dapper, поэтому ему нужны ключи.

В любом случае у класса есть ключи - это таблица «многие ко многим» с составным ключом. Доммел признает Key атрибут, который можно использовать для указания составных ключей.

В модульном тесте Dommel класс ProductsCategories используется для представления отношения «многие ко многим» с составным ключом:

      public class ProductsCategories
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ProductId { get; set; }

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int CategoryId { get; set; }
}
Другие вопросы по тегам