寻找属性(装饰)来提及与auto-mapper一起使用的源属性名称

时间:2015-07-02 15:26:28

标签: c# automapper

我的DTO看起来像这样

  public class SomeDTO
{
    public string last_name{ get; set; }
    public string account_number { get; set; }
}

我的属性名称有下划线,因为我必须将它映射到源的属性名称。它工作正常。

但我正在寻找一些帮助我正确命名DTO的属性。所以我可以有类似的东西。

   public class SomeDTO
{
    [Something("last_name")]   
    public string LastName{ get; set; }
    [Something("account_number")]   
    public string AccountNumber { get; set; }
}

“列”不起作用,因为我猜它适用于EF Only。

这是通用自动映射的代码。将数据读取器映射到DTO。

        public T ExecuteQuerySingle<T>(List<SqlParameter> paramList, string commandString)
    {
        using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString))

        using (var cmd = new SqlCommand(commandString, conn))
        {

                cmd.CommandType = CommandType.StoredProcedure;
                foreach (var param in paramList)
                {
                    cmd.Parameters.Add(param);
                }
                conn.Open();
                var reader = cmd.ExecuteReader();
                if (reader.HasRows)
                {
                    T item;
                    Mapper.CreateMap<IDataReader, T>();
                    while (reader.Read())
                    {
                        item = Mapper.Map<IDataReader, T>(reader);
                        return item;
                    }
                    conn.Close();
                    return default(T);
                }
                conn.Close();
                return default(T);

        }
    }

1 个答案:

答案 0 :(得分:0)

您可以实现INamingConvention将名称转换为方便您也可以实现用于手动读取自定义属性和填充字段的逻辑