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
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因