我尝试使用Dapper Extension& MS Access在一定程度上取得了成功。我的代码如下所示。所有功能都正常工作(插入/计数/取消列表/删除),除了Get&更新。我总结了下面的代码。如果有人想要我可以粘贴所有代码
我的产品类
public class Products
{
public string ProductNumber { get; set; }
public string Description { get; set; }
}
在我的班级。我试着获得产品并更新如下。 con.Get<Products>
函数返回“Sequence包含多个元素”消息的异常,con.Update<Products>
返回的异常“必须至少定义一个Key列”< / em>的。
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)
也能正常运作。 I did follow this link for setup
答案 0 :(得分:2)
如果DapperExtensions无法从您的类中推断出名为ID的关键属性,则需要通过class mapper明确指定一个属性。假设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 })