Dapper Extension Get&Update返回错误

dapper dapper-extensions

我尝试使用Dapper Extension和MS Access并在一定程度上取得了成功。我的代码如下所示。除Get&Update外,所有功能都能正常工作(Insert / Count / GetList / Delete)。我总结了下面的代码。如果有人想要我可以在这里粘贴所有代码

我的产品类

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

在我的主要课堂上。我试着获得产品并更新如下。 con.Get<Products>函数返回“Sequence包含多个元素”消息的异常, con.Update<Products>返回一个异常, “必须至少定义一个Key列”

        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是数据库中的主键,以下示例类映射器应将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 Extensions会自动捡起它。如果您将类和Dapper代码放在单独的程序集中,则可以使用以下行将其指向映射器:

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


许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow