Exemple #1
0
        public static IStructureBuilder GetBuilderForInsertsAssigningIfMissingId(IStructureBuilders builders, IStructureSchema schema, IDbClient dbClient)
        {
            Ensure.That(builders, "builders").IsNotNull();
            Ensure.That(schema, "schema").IsNotNull();
            Ensure.That(dbClient, "dbClient").IsNotNull();

            IStructureIdGenerator idGenerator;
            var idType = schema.IdAccessor.IdType;

            if (idType.IsGuid())
            {
                idGenerator = builders.GuidStructureIdGeneratorFn(schema);
            }
            else if (idType.IsIdentity())
            {
                idGenerator = builders.IdentityStructureIdGeneratorFn(schema, dbClient);
            }
            else if (idType.IsString())
            {
                idGenerator = new EmptyStructureIdGenerator();
            }
            else
            {
                throw new SisoDbException(ExceptionMessages.StructureBuilders_CreateForInsert.Inject(idType, schema.Name));
            }

            return(new StructureBuilderAutoId
            {
                StructureIdGenerator = idGenerator,
                StructureSerializer = builders.StructureSerializerFn()
            });
        }
Exemple #2
0
 public StructureBuilderPreservingId()
 {
     IndexesFactory       = new StructureIndexesFactory();
     StructureSerializer  = new EmptyStructureSerializer();
     StructureIdGenerator = new EmptyStructureIdGenerator();
 }