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())); }
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(); }); }