/// <summary>
 /// 是否是外键
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="member"></param>
 /// <returns></returns>
 public virtual bool IsForeignKey(MappingEntity entity, MemberInfo member)
 {
     return member.GetAttributeValue<NkjSoft.ORM.Data.Mapping.AssociationAttribute, bool>(p => p.IsForeignKey);
 }
        /// <summary>
        /// Determines if a property can be part of an update operation
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="member"></param>
        /// <returns></returns>
        public virtual bool IsUpdatable(MappingEntity entity, MemberInfo member)
        {
            //return !this.IsPrimaryKey(entity, member);
            //TODO: 2010-7-17 返回指定字段成员是否参与 Insert  或 Update  操作

            return member.GetAttributeValue<ColumnAttribute, bool>(p => p.InsertOrUpdatable);
        }
 /// <summary>
 /// Determines if a property is generated on the server during insert
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <param name="member">The member.</param>
 /// <returns>
 /// 	<c>true</c> if the specified entity is generated; otherwise, <c>false</c>.
 /// </returns>
 public virtual bool IsIdentity(MappingEntity entity, MemberInfo member)
 {
     bool isOk = member.GetAttributeValue<ColumnAttribute, bool>(p => p.IsIdentity);
     return isOk;
     //return entity.GetAttribute<bool>(member, m => m.IsGenerated);
 }
 /// <summary>
 /// Determines if a property is computed after insert or update
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <param name="member">The member.</param>
 /// <returns>
 /// 	<c>true</c> if the specified entity is computed; otherwise, <c>false</c>.
 /// </returns>
 public virtual bool IsComputed(MappingEntity entity, MemberInfo member)
 {
     return member.GetAttributeValue<ColumnAttribute, bool>(p => p.IsComputed);
     //return entity.GetAttribute<bool>(member, m => m.IsComputed);
 }
        /// <summary>
        /// Determines if a property represents or is part of the entities unique identity (often primary key)
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="member"></param>
        /// <returns></returns>
        public override bool IsPrimaryKey(MappingEntity entity, MemberInfo member)
        {
            return member.GetAttributeValue<ColumnAttribute, bool>(p => p.IsPrimaryKey);
            //return entity.GetAttribute<bool>(member, m => m.IsPrimaryKey);

            //Type entityType = entity.EntityType;
            ////TODO:最终,在这个位置去掉Insert 语句中,对象成员标记了 自动增长的特性的属性..将不参与 Insert 操作 s 
            //object[] cas = member.GetCustomAttributes(typeof(Mapping.ColumnAttribute), false);
            //if (cas.Length == 1)
            //{
            //    ColumnAttribute ca = cas[0] as ColumnAttribute;
            //    return ca.IsPrimaryKey;
            //}
            //return false;
        }
 /// <summary>
 /// The type declaration for the column in the provider's syntax
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="member"></param>
 /// <returns>a string representing the type declaration or null</returns>
 public virtual string GetColumnDbType(MappingEntity entity, MemberInfo member)
 {
     return member.GetAttributeValue<ColumnAttribute, string>(p => p.DbType);
     //return entity.GetAttribute<string>(member, m => m.DbType);
     //return null;
 }