コード例 #1
0
        public T ExecuteScalar <T>(DbCommandSpec commandSpec)
        {
            var command = commandSpec.CreateCommand(dbAdapter, connection);
            var result  = Try(command.ExecuteScalar);

            return((T)result);
        }
コード例 #2
0
ファイル: EntityMap.cs プロジェクト: Wijlini/catnap-orm
        public DbCommandSpec GetInsertCommand(IEntity entity, int?parentId)
        {
            var command = new DbCommandSpec();

            var columnProperties = propertyMaps.Where(x => x is IPropertyMapWithColumn <T>).Cast <IPropertyMapWithColumn <T> >();
            var writableColumns  = columnProperties.Where(x => !x.SetterIsPrivate).ToList();
            var columnNames      = writableColumns.Select(x => x.ColumnName).ToList();
            var paramterNames    = writableColumns.Select(x => x.ColumnName).ToList();

            if (!string.IsNullOrEmpty(ParentColumnName))
            {
                columnNames.Add(ParentColumnName);
                paramterNames.Add(ParentColumnName);
                command.AddParameter(ParentColumnName, parentId);
            }

            var sql = string.Format("insert into {0} ({1}) values ({2})",
                                    TableName,
                                    string.Join(",", columnNames.ToArray()),
                                    string.Join(",", paramterNames.Select(x => SessionFactory.DEFAULT_SQL_PARAMETER_PREFIX + x).ToArray()));

            command.SetCommandText(sql);

            foreach (var map in writableColumns)
            {
                command.AddParameter(map.ColumnName, map.GetColumnValue(entity));
            }

            return(command);
        }
コード例 #3
0
        public IEnumerable <Person> GetPesonsWhoHavePosted()
        {
            var command = new DbCommandSpec()
                          .SetCommandText("select p.* from Person p inner join Post on Post.PosterId = p.Id");

            return(UnitOfWork.Current.Session.List <Person>(command));
        }
コード例 #4
0
ファイル: EntityMap.cs プロジェクト: Wijlini/catnap-orm
        public DbCommandSpec GetUpdateCommand(IEntity entity, int?parentId)
        {
            var command = new DbCommandSpec();

            var columnProperties = propertyMaps
                                   .Where(x => x is IPropertyMapWithColumn <T>)
                                   .Cast <IPropertyMapWithColumn <T> >()
                                   .ToList();
            var setPairs = columnProperties
                           .Where(x => x.ColumnName != "Id")
                           .Select(x => string.Format("{0}={1}{0}", x.ColumnName, SessionFactory.DEFAULT_SQL_PARAMETER_PREFIX))
                           .ToList();

            if (!string.IsNullOrEmpty(ParentColumnName))
            {
                setPairs.Add(string.Format("{0}={1}{0}", ParentColumnName, SessionFactory.DEFAULT_SQL_PARAMETER_PREFIX));
                command.AddParameter(ParentColumnName, parentId);
            }

            var sql = string.Format("update {0} set {1} where Id = {2}Id",
                                    TableName,
                                    string.Join(",", setPairs.ToArray()),
                                    SessionFactory.DEFAULT_SQL_PARAMETER_PREFIX);

            command.AddParameter("Id", entity.Id);

            command.SetCommandText(sql);

            foreach (var map in columnProperties)
            {
                command.AddParameter(map.ColumnName, map.GetColumnValue(entity));
            }

            return(command);
        }
コード例 #5
0
        public long GetTotalPostCount(int personId)
        {
            var command = new DbCommandSpec()
                          .SetCommandText("select count(*) from Post p where p.PosterId = @personId")
                          .AddParameter("@personId", personId);

            return(UnitOfWork.Current.Session.ExecuteScalar <long>(command));
        }
コード例 #6
0
        private void RecordMigration(IDatabaseMigration migration)
        {
            var migrationsTableExistsCommand = new DbCommandSpec()
                                               .SetCommandText(string.Format("insert into {0} (Name) values ({1}name)", MIGRATIONS_TABLE_NAME,
                                                                             SessionFactory.DEFAULT_SQL_PARAMETER_PREFIX))
                                               .AddParameter("name", migration.Name);

            UnitOfWork.Current.Session.ExecuteNonQuery(migrationsTableExistsCommand);
        }
コード例 #7
0
 private void RecordMigration(IDatabaseMigration migration)
 {
     var migrationsTableExistsCommand = new DbCommandSpec()
         .SetCommandText(string.Format("insert into {0} ({1}) values ({2})",
             MIGRATIONS_TABLE_NAME,
             session.DbAdapter.Quote(MIGRATION_NAME_COLUMN_NAME),
             session.DbAdapter.FormatParameterName("name")))
         .AddParameter("name", migration.Name);
     session.ExecuteNonQuery(migrationsTableExistsCommand);
 }
コード例 #8
0
        private bool PreviouslyRun(IDatabaseMigration migration)
        {
            var command = new DbCommandSpec()
                          .SetCommandText(string.Format("select count(*) from {0} where Name = {1}name",
                                                        MIGRATIONS_TABLE_NAME, SessionFactory.DEFAULT_SQL_PARAMETER_PREFIX))
                          .AddParameter("name", migration.Name);
            var result = (long)UnitOfWork.Current.Session.ExecuteScalar(command);

            return(result > 0);
        }
コード例 #9
0
 private bool PreviouslyRun(IDatabaseMigration migration)
 {
     var command = new DbCommandSpec()
         .SetCommandText(string.Format("select count(*) from {0} where {1} = {2}",
             MIGRATIONS_TABLE_NAME,
             session.DbAdapter.Quote(MIGRATION_NAME_COLUMN_NAME),
             session.DbAdapter.FormatParameterName("name")))
         .AddParameter("name", migration.Name);
     var result = session.ExecuteScalar(command);
     return Convert.ToInt64(result) > 0;
 }
コード例 #10
0
 private void CreateMigrationsTableIfNotExists()
 {
     var tableExists = session.TableExists(MIGRATIONS_TABLE_NAME);
     if (tableExists)
     {
         return;
     }
     var createMigrationsTable = new DbCommandSpec()
         .SetCommandText(string.Format("create table {0} ({1} {2})",
             MIGRATIONS_TABLE_NAME,
             session.DbAdapter.Quote(MIGRATION_NAME_COLUMN_NAME),
             session.DbAdapter.GetGeneralStringType()));
     session.ExecuteNonQuery(createMigrationsTable);
     Log.Debug("Migrations table created");
 }
コード例 #11
0
        private void CreateMigrationsTableIfNotExists()
        {
            var existsResult = UnitOfWork.Current.Session.ExecuteQuery(
                dbAdapter.CreateGetTableMetadataCommand(MIGRATIONS_TABLE_NAME));

            if (existsResult.Count() != 0)
            {
                return;
            }
            var createMigrationsTable = new DbCommandSpec()
                                        .SetCommandText(string.Format("create table {0} (Name varchar(200))", MIGRATIONS_TABLE_NAME));

            UnitOfWork.Current.Session.ExecuteNonQuery(createMigrationsTable);
            Log.Debug("Migrations table created");
        }
コード例 #12
0
ファイル: EntityMap.cs プロジェクト: Wijlini/catnap-orm
        public DbCommandSpec GetFindCommand(IList <Parameter> parameters, IList <string> condtions)
        {
            var command = new DbCommandSpec();

            foreach (var parameter in parameters)
            {
                command.AddParameters(parameter);
            }
            var sql = BaseSelectSql;

            if (condtions.Count > 0)
            {
                sql += " where " + string.Join(" and ", condtions.ToArray());
            }
            command.SetCommandText(sql);
            return(command);
        }
コード例 #13
0
 public IList <IDictionary <string, object> > List(DbCommandSpec commandSpec)
 {
     return(ExecuteQuery(commandSpec).ToList());
 }
コード例 #14
0
        public void ExecuteNonQuery(DbCommandSpec commandSpec)
        {
            var command = commandSpec.CreateCommand(dbAdapter, connection);

            Try(command.ExecuteNonQuery);
        }
コード例 #15
0
        public IList <T> List <T>(DbCommandSpec commandSpec) where T : class, IEntity, new()
        {
            var entityMap = domainMap.GetMapFor <T>();

            return(List(commandSpec).Select(x => entityMap.BuildFrom(x, this)).ToList());
        }
コード例 #16
0
        public object ExecuteScalar(DbCommandSpec commandSpec)
        {
            var command = commandSpec.CreateCommand(dbAdapter, connection);

            return(Try(command.ExecuteScalar));
        }
コード例 #17
0
        public IEnumerable <IDictionary <string, object> > ExecuteQuery(DbCommandSpec commandSpec)
        {
            var command = commandSpec.CreateCommand(dbAdapter, connection);

            return(Try(() => ExecuteQuery(command)));
        }
コード例 #18
0
		private void Execute (DbCommandSpec command)
		{
			UnitOfWork.Current.Session.ExecuteNonQuery (command);
		}
コード例 #19
0
ファイル: CreateSchema.cs プロジェクト: Wijlini/catnap-orm
 private void Execute(DbCommandSpec command)
 {
     UnitOfWork.Current.Session.ExecuteNonQuery(command);
 }