当前位置: 首页>>代码示例>>C#>>正文


C# Schema.DocumentMapping类代码示例

本文整理汇总了C#中Marten.Schema.DocumentMapping的典型用法代码示例。如果您正苦于以下问题:C# DocumentMapping类的具体用法?C# DocumentMapping怎么用?C# DocumentMapping使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


DocumentMapping类属于Marten.Schema命名空间,在下文中一共展示了DocumentMapping类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: generating_code_and_sql_for_hierarchy_smoke_Tests_on_other_database_schema

 public generating_code_and_sql_for_hierarchy_smoke_Tests_on_other_database_schema()
 {
     theHierarchy = DocumentMapping.For<Squad>("other");
     theHierarchy.AddSubClass(typeof(BasketballTeam));
     theHierarchy.AddSubClass(typeof(BaseballTeam));
     theHierarchy.AddSubClass(typeof(FootballTeam));
 }
开发者ID:nieve,项目名称:marten,代码行数:7,代码来源:generating_code_and_sql_for_hierarchy_smoke_Tests.cs

示例2: SubClassMapping

 public SubClassMapping(Type documentType, DocumentMapping parent, string alias = null)
 {
     DocumentType = documentType;
     _inner = new DocumentMapping(documentType);
     _parent = parent;
     Alias = alias ?? documentType.GetTypeName().Replace(".", "_").SplitCamelCase().Replace(" ", "_").ToLowerInvariant();
 }
开发者ID:jimbono,项目名称:marten,代码行数:7,代码来源:SubClassMapping.cs

示例3: GenerateDocumentStorageCode

        public static string GenerateDocumentStorageCode(DocumentMapping[] mappings)
        {
            var writer = new SourceWriter();

            // TODO -- get rid of the magic strings
            var namespaces = new List<string> {"System", "Marten", "Marten.Schema", "Marten.Linq", "Marten.Util", "Npgsql", "Remotion.Linq"};
            namespaces.AddRange(mappings.Select(x => x.DocumentType.Namespace));

            namespaces.Distinct().OrderBy(x => x).Each(x => writer.WriteLine($"using {x};"));
            writer.BlankLine();

            writer.StartNamespace("Marten.GeneratedCode");

            mappings.Each(x =>
            {
                x.GenerateDocumentStorage(writer);
                writer.BlankLine();
                writer.BlankLine();
            });

            writer.FinishBlock();

            var code = writer.Code();
            return code;
        }
开发者ID:jjchiw,项目名称:Marten,代码行数:25,代码来源:DocumentStorageBuilder.cs

示例4: generating_code_and_sql_for_hierarchy_smoke_Tests

 public generating_code_and_sql_for_hierarchy_smoke_Tests()
 {
     theHierarchy = DocumentMapping.For<Squad>();
     theHierarchy.AddSubClass(typeof (BasketballTeam));
     theHierarchy.AddSubClass(typeof (BaseballTeam));
     theHierarchy.AddSubClass(typeof (FootballTeam));
 }
开发者ID:,项目名称:,代码行数:7,代码来源:

示例5: CreateSchema

        public void CreateSchema(IDocumentSchema schema, DocumentMapping mapping)
        {
            var writer= new StringWriter();
            mapping.WriteSchemaObjects(schema, writer);

            _runner.Execute(writer.ToString());
        }
开发者ID:jjchiw,项目名称:Marten,代码行数:7,代码来源:DevelopmentSchemaCreation.cs

示例6: ParseWhereFragment

        public IWhereFragment ParseWhereFragment(DocumentMapping mapping, Expression expression)
        {
            if (expression is BinaryExpression)
            {
                return GetWhereFragment(mapping, expression.As<BinaryExpression>());
            }

            if (expression.NodeType == ExpressionType.Call)
            {
                return GetMethodCall(mapping, expression.As<MethodCallExpression>());
            }

            if (expression is MemberExpression && expression.Type == typeof (bool))
            {
                var locator = JsonLocator(mapping, expression.As<MemberExpression>());
                return new WhereFragment("{0} = True".ToFormat(locator), true);
            }

            if (expression.NodeType == ExpressionType.Not)
            {
                return GetNotWhereFragment(mapping, expression.As<UnaryExpression>().Operand);
            }

            if (expression is SubQueryExpression)
            {
                return GetWhereFragment(mapping, expression.As<SubQueryExpression>());
            }

            throw new NotSupportedException();
        }
开发者ID:kiliman,项目名称:marten,代码行数:30,代码来源:MartenExpressionParser.cs

示例7: ComputedIndex

 public ComputedIndex(DocumentMapping mapping, MemberInfo[] members)
 {
     _members = members;
     var field = mapping.FieldFor(members);
     _locator = field.SqlLocator.Replace("d.", "");
     _table = mapping.Table;
 }
开发者ID:phillip-haydon,项目名称:marten,代码行数:7,代码来源:ComputedIndex.cs

示例8: Build

        public static IEnumerable<IDocumentStorage> Build(IDocumentSchema schema, DocumentMapping[] mappings)
        {
            var code = GenerateDocumentStorageCode(mappings);

            var generator = new AssemblyGenerator();
            generator.ReferenceAssembly(Assembly.GetExecutingAssembly());
            generator.ReferenceAssemblyContainingType<NpgsqlConnection>();
            generator.ReferenceAssemblyContainingType<QueryModel>();
            generator.ReferenceAssemblyContainingType<DbCommand>();
            generator.ReferenceAssemblyContainingType<Component>();

            mappings.Select(x => x.DocumentType.Assembly).Distinct().Each(assem => generator.ReferenceAssembly(assem));

            var assembly = generator.Generate(code);

            return assembly
                .GetExportedTypes()
                .Where(x => x.IsConcreteTypeOf<IDocumentStorage>())
                .Select(x =>
                {
                    var docType =
                        x.FindInterfaceThatCloses(typeof (IdAssignment<>)).GetGenericArguments().Single();

                    var mapping = mappings.Single(m => m.DocumentType == docType);

                    var arguments = mapping.IdStrategy.ToArguments().Select(arg => arg.GetValue(schema)).ToArray();

                    var ctor = x.GetConstructors().Single();

                    return ctor.Invoke(arguments).As<IDocumentStorage>();
                });
        }
开发者ID:danbarua,项目名称:Marten,代码行数:32,代码来源:DocumentStorageBuilder.cs

示例9: Build

        public static IEnumerable<IDocumentStorage> Build(IDocumentSchema schema, DocumentMapping[] mappings)
        {
            // Generate the actual source code
            var code = GenerateDocumentStorageCode(mappings);

            var generator = new AssemblyGenerator();

            // Tell the generator which other assemblies that it should be referencing 
            // for the compilation
            generator.ReferenceAssembly(Assembly.GetExecutingAssembly());
            generator.ReferenceAssemblyContainingType<NpgsqlConnection>();
            generator.ReferenceAssemblyContainingType<QueryModel>();
            generator.ReferenceAssemblyContainingType<DbCommand>();
            generator.ReferenceAssemblyContainingType<Component>();
            generator.ReferenceAssemblyContainingType<DbDataReader>();

            mappings.Select(x => x.DocumentType.Assembly).Distinct().Each(assem => generator.ReferenceAssembly(assem));

            // build the new assembly -- this will blow up if there are any
            // compilation errors with the list of errors and the actual code

            var assembly = generator.Generate(code);

            return assembly
                .GetExportedTypes()
                .Where(x => x.IsConcreteTypeOf<IDocumentStorage>())
                .Select(x => BuildStorageObject(schema, mappings, x));
        }
开发者ID:nieve,项目名称:marten,代码行数:28,代码来源:DocumentStorageBuilder.cs

示例10: UpsertFunction

        public UpsertFunction(DocumentMapping mapping)
        {
            if (mapping == null) throw new ArgumentNullException(nameof(mapping));

            _functionName = mapping.UpsertFunction;
            _tableName = mapping.Table;
            _primaryKeyConstraintName = "pk_" + mapping.Table.Name;

            var idType = mapping.IdMember.GetMemberType();
            var pgIdType = TypeMappings.GetPgType(idType);

            Arguments.Add(new UpsertArgument
            {
                Arg = "docId",
                PostgresType = pgIdType,
                Column = "id",
                Members = new[] {mapping.IdMember}
            });
            Arguments.Add(new UpsertArgument
            {
                Arg = "doc",
                PostgresType = "JSONB",
                DbType = NpgsqlDbType.Jsonb,
                Column = "data",
                BulkInsertPattern = "writer.Write(serializer.ToJson(x), NpgsqlDbType.Jsonb);",
                BatchUpdatePattern = "*"
            });
        }
开发者ID:,项目名称:,代码行数:28,代码来源:

示例11: Modify

        public override void Modify(DocumentMapping mapping, MemberInfo member)
        {
            var fkDefinition = mapping.AddForeignKey(member.Name, _referenceType);
            mapping.AddIndex(fkDefinition.ColumnName);
            

        }
开发者ID:JasperFx,项目名称:marten,代码行数:7,代码来源:ForeignKeyAttribute.cs

示例12: SingleFieldSelectorTests

        public SingleFieldSelectorTests()
        {
            theMapping = DocumentMapping.For<User>();
            var prop = ReflectionHelper.GetProperty<User>(x => x.FirstName);

            theSelector = new SingleFieldSelector<string>(theMapping, new MemberInfo[] {prop});
        }
开发者ID:danielmarbach,项目名称:marten,代码行数:7,代码来源:SingleFieldSelectorTests.cs

示例13: SchemaDiff

        public SchemaDiff(IDocumentSchema schema, SchemaObjects existing, DocumentMapping mapping)
        {
            if (existing.HasNone())
            {
                AllMissing = true;
            }
            else
            {
                var expectedTable = mapping.ToTable(schema);
                TableDiff = new TableDiff(expectedTable, existing.Table);

                // TODO -- drop obsolete indices?

                mapping.Indexes.Each(index =>
                {
                    if (existing.ActualIndices.ContainsKey(index.IndexName))
                    {
                        var actualIndex = existing.ActualIndices[index.IndexName];
                        if (!index.Matches(actualIndex))
                        {
                            IndexChanges.Add($"drop index {expectedTable.Table.Schema}.{index.IndexName};{index.ToDDL()}");
                        }
                    }
                    else
                    {
                        IndexChanges.Add(index.ToDDL());
                    }
                });

            }

            _existing = existing;
            _mapping = mapping;
            _schema = schema;
        }
开发者ID:,项目名称:,代码行数:35,代码来源:

示例14: BuildStorageObject

        public static IDocumentStorage BuildStorageObject(IDocumentSchema schema, Type storageType, DocumentMapping mapping)
        {
            var arguments = mapping.ToArguments().Select(arg => arg.GetValue(schema)).ToArray();

            var ctor = storageType.GetConstructors().Single();

            return ctor.Invoke(arguments).As<IDocumentStorage>();
        }
开发者ID:nieve,项目名称:marten,代码行数:8,代码来源:DocumentStorageBuilder.cs

示例15: storage_arguments_adds_hierarchy_argument_with_subclasses

        public void storage_arguments_adds_hierarchy_argument_with_subclasses()
        {
            var mapping = new DocumentMapping(typeof(Squad), new StoreOptions());
            mapping.AddSubClass(typeof(FootballTeam));

            mapping.ToArguments().OfType<HierarchyArgument>()
                .Single().Mapping.ShouldBeSameAs(mapping);
        }
开发者ID:jimbono,项目名称:marten,代码行数:8,代码来源:DocumentMappingTests.cs


注:本文中的Marten.Schema.DocumentMapping类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。