关于Dapper的使用笔记2

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);

 

你可能感兴趣的:(APP)