public Ef35PropertyAttr(ColumnMetadata md, bool addUpdateCheckNever) { Name = NfString.ExtractLastWholeWord(md.column_name, Shared.Core.NfSettings.DefaultTypeSeparator); _composedName = Compose.PropertyName(md.column_name); DbType = md.data_type.ToUpper(); if (Lexicon.Mssql2HbmTypes.ContainsKey(md.data_type) && Lexicon.Mssql2HbmTypes[md.data_type] == "AnsiString") { if (md.string_length != null && md.string_length < 0) { DbType = string.Format("{0}(MAX)", DbType); } else { DbType = string.Format("{0}({1})", DbType, md.string_length); } } if (Globals.MssqlTypesWithPrecision.Contains(md.data_type)) { DbType = string.Format("{0}({1})", DbType, md.precision); } if (md.is_nullable != null && md.is_nullable.Value == false) { DbType = string.Format("{0} NOT NULL", DbType); CanBeNull = false; } else { CanBeNull = true; } if (md.is_auto_increment != null && md.is_auto_increment.Value) { DbType = string.Format("{0} IDENTITY", DbType); IsPrimaryKey = true; IsDbGenerated = true; } IsUpdateCheckNever = addUpdateCheckNever; }
protected internal void GetCompositeKeyProperties() { if (!IsCompositeKey) { return; } var kmtoProps = _hbmXml.SelectNodes( CreateXpath(HbmXmlNames.HIBERNATE_MAPPING, HbmXmlNames.CLASS, HbmXmlNames.COMPOSITE_ID, HbmXmlNames.KEY_MANY_TO_ONE), _nsMgr); var keyProps = _hbmXml.SelectNodes( CreateXpath(HbmXmlNames.HIBERNATE_MAPPING, HbmXmlNames.CLASS, HbmXmlNames.COMPOSITE_ID, HbmXmlNames.KEY_PROPERTY), _nsMgr); if (kmtoProps != null) { foreach ( var kmto in kmtoProps.Cast <XmlElement>() .Where( t => t != null && t.HasAttributes && t.Attributes[HbmXmlNames.NAME] != null && t.Attributes[HbmXmlNames.CLASS] != null)) { var kpName = kmto.Attributes[HbmXmlNames.NAME].Value; var kpType = (new NfTypeName(kmto.Attributes[HbmXmlNames.CLASS].Value)).FullName; //filter list used in GetAllTablesColumns _keyManyToOnePropertyNames.Add(kpName); AddToCompositeKeyProperties(kpName, kpType); //add the comment data if (!kmto.HasChildNodes) { continue; } var columnNode = kmto.FirstChild; while (columnNode != null) { if (!columnNode.HasChildNodes) { columnNode = columnNode.NextSibling; continue; } var pn = Compose.PropertyName( columnNode.Attributes[HbmXmlNames.NAME].Value.Replace("[", string.Empty) .Replace("]", string.Empty)); var columnJson = columnNode.FirstChild.InnerText; ColumnMetadata dataOut; if (!ColumnMetadata.TryParseJson(columnJson, out dataOut)) { columnNode = columnNode.NextSibling; continue; } AddToKeyColumns(pn, dataOut); columnNode = columnNode.NextSibling; } } } if (keyProps == null) { return; } foreach ( var kp in keyProps.Cast <XmlElement>() .Where( t => t != null && t.HasAttributes && t.Attributes[HbmXmlNames.NAME] != null && t.Attributes[HbmXmlNames.TYPE] != null)) { var kpName = kp.Attributes[HbmXmlNames.NAME].Value; var kpType = Lexicon.Hbm2NetTypes[(kp.Attributes[HbmXmlNames.TYPE].Value)]; AddToCompositeKeyProperties(kpName, kpType); if (!kp.HasChildNodes || !kp.FirstChild.HasChildNodes) { continue; } var columnNode = kp.FirstChild; var columnJson = columnNode.FirstChild.InnerText; ColumnMetadata dataOut; if (ColumnMetadata.TryParseJson(columnJson, out dataOut)) { AddToKeyColumns(kpName, dataOut); } } }