Dapper.Contrib
Dapper.Contrib copied to clipboard
About Dapper Column Mapper Design ~ ^-^
hi ~ my database table design :
create table `users_orders` (
`id` int(11) unsigned not null auto_increment,
`users` int(11) not null,
`orderno` varchar(32) not null,
`normal_fee` decimal(10,2) null
)
my object class :
public class UserOrder: EntityByType
{
[Column(Name = "id")]
public int Id { get; set; }
[Column(Name = "users")]
public int UserId { get; set; }
[Column(Name = "orderno")]
public string OrderNo { get; set; }
[Column(Name = "normal_fee")]
public decimal NormalFee { get; set; }
}
my class mapper :
// TableName Mapper
SqlMapperExtensions.TableNameMapper = (type) =>
{
var tableattr = type.GetCustomAttributes(false).SingleOrDefault(attr => attr.GetType().Name == "TableAttribute") as dynamic;
if (tableattr != null)
return tableattr.Name;
var name = type.Name;
if (type.IsInterface && name.StartsWith("I"))
name = name.Substring(1);
return name;
};
// Column Mapper
SqlMapper.SetTypeMap(typeof(UserOrder), new CustomPropertyTypeMap(typeof(UserOrder), (type, columnName) => type.GetProperties()
.FirstOrDefault(prop => prop.GetCustomAttributes(false).OfType<ColumnAttribute>()
.Any(attr => attr.Name.Equals(columnName, StringComparison.OrdinalIgnoreCase)))));
it can query right , but update or insert not working
my update use 'Dapper.Contrib.Extensions'
public static bool Update<T>(this IDbConnection connection, T entityToUpdate, IDbTransaction transaction = null, int? commandTimeout = null) where T : class;
error message:
Unknown column 'UserId'