/// <summary>
        /// Specify the primary key for this entity<br/>
        /// 指定实体的主键<br/>
        /// </summary>
        public void Id <TPrimaryKey>(
            Expression <Func <T, TPrimaryKey> > memberExpression,
            EntityMappingOptions options)
        {
            options = options ?? new EntityMappingOptions();
            var idMap = base.Map(Expression.Lambda <Func <T, object> >(
                                     Expression.Convert(memberExpression.Body, typeof(object)),
                                     memberExpression.Parameters));

            idMap = idMap.IsKey();
            if (typeof(TPrimaryKey) == typeof(int) || typeof(TPrimaryKey) == typeof(long))
            {
                // Recognize integer primary key as auto increment
                // For now there non explicit option for this
                idMap = idMap.IsIdentity();
            }
            if (!string.IsNullOrEmpty(options.Column))
            {
                idMap = idMap.ToColumn(options.Column);
            }
            if (options.WithSerialization == true)
            {
                TypeHandlerRegistrator.RegisterJsonSerializedType(typeof(TPrimaryKey));
            }
            if (typeof(TPrimaryKey) == typeof(Guid))
            {
                TypeHandlerRegistrator.Register(typeof(Guid), new GuidTypeHandler());
            }
            idMember = ((MemberExpression)memberExpression.Body).Member;
        }
        /// <summary>
        /// Create a member mapping<br/>
        /// 创建成员映射<br/>
        /// </summary>
        public void Map <TMember>(
            Expression <Func <T, TMember> > memberExpression,
            EntityMappingOptions options)
        {
            options = options ?? new EntityMappingOptions();
            var memberMap = base.Map(Expression.Lambda <Func <T, object> >(
                                         Expression.Convert(memberExpression.Body, typeof(object)),
                                         memberExpression.Parameters));

            if (!string.IsNullOrEmpty(options.Column))
            {
                memberMap = memberMap.ToColumn(options.Column);
            }
            if (options.WithSerialization ?? false)
            {
                TypeHandlerRegistrator.RegisterJsonSerializedType(typeof(TMember));
            }
            ordinaryMembers.Add(((MemberExpression)memberExpression.Body).Member);
        }
        /// <summary>
        /// Specify the primary key for this entity
        /// </summary>
        public void Id <TPrimaryKey>(
            Expression <Func <T, TPrimaryKey> > memberExpression,
            EntityMappingOptions options)
        {
            options = options ?? new EntityMappingOptions();
            var idMap = base.Map(Expression.Lambda <Func <T, object> >(
                                     Expression.Convert(memberExpression.Body, typeof(object)),
                                     memberExpression.Parameters));

            idMap = idMap.IsKey();
            if (!string.IsNullOrEmpty(options.Column))
            {
                idMap = idMap.ToColumn(options.Column);
            }
            if (options.WithSerialization == true)
            {
                TypeHandlerRegistrator.RegisterJsonSerializedType(typeof(TPrimaryKey));
            }
            if (typeof(TPrimaryKey) == typeof(Guid))
            {
                TypeHandlerRegistrator.Register(typeof(Guid), new GuidTypeHandler());
            }
            idMember = ((MemberExpression)memberExpression.Body).Member;
        }