Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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);
                }
            }
        }