Расширение Dapper Get & Update возвращает ошибки

dapper dapper-extensions

Вопрос

Я пытался играть с расширением Dapper и MS Access и добился успеха в определенной степени. Мой код приведен ниже. Все функции работают правильно (Insert / Count / GetList / Delete), кроме Get & Update. Я подытожил приведенный ниже код. Если кто-то хочет, я могу вставить весь код здесь

Мой класс продукта

public class Products
{
    public string ProductNumber { get; set; }
    public string Description { get; set; }
}

И в моем основном классе. Я попытался получить продукт и обновить его, как показано ниже. con.Get<Products> возвращает исключение с сообщением «Последовательность содержит более одного элемента» и con.Update<Products> возвращает исключение с «Должен быть определен хотя бы один столбец ключей» .

        using (var con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb"))
        {

            string ProductNumber = "12";
            var product4 = con.Get<Products>(ProductNumber);
            product4.ProductNumber = "Baz";
            con.Update<Products>(product4);   

            Console.ReadLine();
        }

Даже несмотря на то, что con.Get<Products> выходит из строя con.GetList<Products>(predicate) работает отлично. Я выполнил эту ссылку для настройки

Популярные ответы

Если DapperExtensions не может вывести свойство ключа с именем ID из вашего класса, вам нужно явно указать его через класс-сопоставление . Предполагая, что ProductNumber является первичным ключом в базе данных, следующий примерный класс mapper должен установить ProductNumber в качестве первичного ключа для DapperExtensions.

using Dapper;   
using DapperExtensions;
using DapperExtensions.Mapper;
public class ProductsMapper : ClassMapper<Products>
{
    public ProductsMapper()
    {
        Map(x => x.ProductNumber).Key(KeyType.Assigned);
        AutoMap();
    }
}

Этот класс может сидеть где-то внутри той же сборки, что и остальная часть вашего кода. Расширения Dapper автоматически подберут его. Если у вас есть классы и код Dapper в отдельных сборках, вы можете указать его на свой картограф со следующей строкой:

DapperExtensions.DapperExtensions.SetMappingAssemblies({ typeof(ProductsMapper).Assembly })


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow