private IEnumerable <DbColumnMapping <IDbProvider> > GetColumns(DbTableMapping <TDbProvider> mapping)
 {
     return(mapping.GetColumns()
            .Where(column =>
                   this.InsertMode != InsertMode.Insert ||
                   column.PrimaryKeyAttribute == null ||
                   !column.PrimaryKeyAttribute.IsAutoIncrement)
            .ToArray());
 }
        private static DbTableMapping <TDbProvider> BuildMapping <T>()
            where T : new()
        {
            var attr = typeof(T).GetTypeInfo().GetCustomAttribute <DbTableAttribute>();

            if (attr == null)
            {
                throw new ArgumentException(String.Format("type {0} must contain SQLiteTableAttribute", typeof(T).Name));
            }
            var mapping = new DbTableMapping <TDbProvider, T>(attr);

            mapping.MapColumns();
            return(mapping);
        }