1 在实体定义中标示字段名:
public class t_SoDtl { [System.ComponentModel.Description("KeySeq")] public Guid ID { get; set; } //数据库中的列名KeySeq [System.ComponentModel.Description("SoKeySeq")] public Guid SoKeySeq { get; set; } [System.ComponentModel.Description("ItemId")] public string ItemNo { get; set; } [System.ComponentModel.Description("ItemName")] public string ItemName { get; set; } [System.ComponentModel.Description("Price")] public decimal Price { get; set; } [System.ComponentModel.Description("Qty")] public decimal Quality { get; set; }//数据库中的列名Qty [System.ComponentModel.Description("Amount")] public decimal Amount { get; set; } }
2、建立自定义映射 SqlMapper.ITypeMap ---> CustomPropertyTypeMap
var map = new CustomPropertyTypeMap(typeof(t_SoDtl), (type, columnName) => type.GetProperties() .Where(prop => prop.GetCustomAttributes(false).OfType<DescriptionAttribute>().Any(attr => attr.Description == columnName)) //找出Decsription = Column的属性 .FirstOrDefault()); Dapper.SqlMapper.SetTypeMap(typeof(t_SoDtl), map);
3、效果测试
//查询 DbConnection con = this.GetConnection(); return con.Query<t_SoDtl>("select * from dbo.t_SoDtl where SoKeySeq = @SoKeySeq", new {SoKeySeq = soKeySeq}).ToList(); //插入 (注意参数的名称与实体属性的对应) string strSQL = @" INSERT INTO dbo.t_so(KeySeq,SoNo,SoDate,CustomerName,Remark) VALUES(@KeySeq,@SoNo,@SoDate,@CustomerName,@Remark)"; DbConnection con = this.GetConnection(); //con.Execute(strSQL, new {KeySeq = so.KeySeq, SoNo = so.SoNo, SoDate = so.SoDate, CustomerName = so.CustomerName, Remark = so.Remark}); con.Execute(strSQL, so);