示例#1
0
        private string GetHBMappingXml(StoreEntityTypeMetadata entityMeta)
        {
            var properties = new StringBuilder();

            foreach (var propertyMeta in entityMeta.Properties)
            {
                var isString    = propertyMeta.PropertyType == typeof(String);
                var isMaxLength = isString && propertyMeta.MaxLength == Int32.MaxValue;
                if (isString && propertyMeta.MaxLength == 0)
                {
                    propertyMeta.MaxLength = 256;
                }

                var lengthStr  = isString && !isMaxLength ? "length=" + propertyMeta.MaxLength.ToString().Quoted() : "";
                var sqlTypeStr = "";
                if (isString)
                {
                    sqlTypeStr = isMaxLength ? "sql-type=" + "ntext".Quoted() : String.Format("sql-type=\"varchar({0})\"", propertyMeta.MaxLength);
                }

                var xmlStr = String.Format(_hbPropertyTemplate, propertyMeta.PropertyName,
                                           propertyMeta.PropertyType.FullName, lengthStr, sqlTypeStr);
                properties.AppendLine(xmlStr);
            }
            return(String.Format(_hbXmlTemplate, entityMeta.EntityType.AssemblyQualifiedName, entityMeta.EntityType.Name, properties.ToString(), this._name.ToLower()));
        }
示例#2
0
        public void RegisterEntity(Type type)
        {
            Sync(() =>
            {
                if (_entities.ContainsKey(type))
                {
                    _entities.Remove(type);
                }
                if (_hbMappings.ContainsKey(type))
                {
                    _hbMappings.Remove(type);
                }

                _entities[type] = new StoreEntityTypeMetadata(type);

                InvalidateCurrentFactory();
            });
        }