Dapper Extension Get&Updateはエラーを返します

dapper dapper-extensions

質問

私はDapper Extension&MS Accessでプレイしようとしていて、ある程度まで成功しました。私のコードは以下の通りです。 Get&Updateを除くすべての関数が正しく機能します(Insert / Count / GetList / Delete)。私は以下のコードを要約した。誰かが望むなら、私はここにすべてのコードを貼り付けることができます

My Productクラス

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

そして、私のメインクラスで。私は製品を入手し、以下のように更新しようとしました。 con.Get<Products>関数は「複数の要素を含むシーケンス」メッセージをcon.Update<Products>例外を返し、 con.Update<Products>「少なくとも1つのキー列を定義する必要があります」という例外を返します。

        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