Example #1
0
        void IMetadataBuilder.BuildEntityMetadata(EntityMetadata metadata, ClassBuilder entityBuilder)
        {
            var attr = entityBuilder.AddAttribute(WellKnownTypes.LinqToDB.Mapping.TableAttribute);

            if (metadata.Name != null)
            {
                // always generate table name when it is provided, even if it match class name
                // otherwise generated code will be refactoring-unfriendly (will break on class rename)
                // note that rename could happen not only as user's action in generated code, but also during code
                // generation to resolve naming conflicts with other members/types
                attr.Parameter(_builder.Constant(metadata.Name.Value.Name, true));
                if (metadata.Name.Value.Schema != null)
                {
                    attr.Parameter(WellKnownTypes.LinqToDB.Mapping.TableAttribute_Schema, _builder.Constant(metadata.Name.Value.Schema, true));
                }
                if (metadata.Name.Value.Database != null)
                {
                    attr.Parameter(WellKnownTypes.LinqToDB.Mapping.TableAttribute_Database, _builder.Constant(metadata.Name.Value.Database, true));
                }
                if (metadata.Name.Value.Server != null)
                {
                    attr.Parameter(WellKnownTypes.LinqToDB.Mapping.TableAttribute_Server, _builder.Constant(metadata.Name.Value.Server, true));
                }
            }

            if (metadata.IsView)
            {
                attr.Parameter(WellKnownTypes.LinqToDB.Mapping.TableAttribute_IsView, _builder.Constant(true, true));
            }
            if (metadata.Configuration != null)
            {
                attr.Parameter(WellKnownTypes.LinqToDB.Mapping.TableAttribute_Configuration, _builder.Constant(metadata.Configuration, true));
            }
            if (!metadata.IsColumnAttributeRequired)
            {
                attr.Parameter(WellKnownTypes.LinqToDB.Mapping.TableAttribute_IsColumnAttributeRequired, _builder.Constant(false, true));
            }
            if (metadata.IsTemporary)
            {
                attr.Parameter(WellKnownTypes.LinqToDB.Mapping.TableAttribute_IsTemporary, _builder.Constant(true, true));
            }
            if (metadata.TableOptions != TableOptions.NotSet)
            {
                attr.Parameter(WellKnownTypes.LinqToDB.Mapping.TableAttribute_TableOptions, _builder.Constant(metadata.TableOptions, true));
            }
        }