Exemplo n.º 1
0
        /// <summary>
        /// Create a new instance into database.
        /// </summary>
        /// <param name="instance">Instance to create.</param>
        /// <returns>The instance unique identifier.</returns>
        private static long InsertDatabaseRecord(T instance)
        {
            object        value;
            ORMSqlCommand cmd = ORMEntity <T> .SqlDialect.GetInsertCommand();

            // Connecto to database
            ORMEntity <T> .Connect();

            // Set command parameters
            foreach (ORMEntityMember param in cmd.Parameters)
            {
                value = param.GetValue(instance);
                ORMEntity <T> .SetParameter(param, value is null?DBNull.Value : value);
            }

            // Execute the SELECT sentence to retrieve the instance properties
            ORMEntity <T> .ExecuteNonQuery(cmd.SqlCommand);

            long id = ExecuteScalar(SqlDialect.GetNewIDCommand().SqlCommand);

            // Set the generated new record unique identifier to the current instance
            ORMEntity <T> .ORMStructure.PrimaryKey.SetValue(instance, id);

            // Close the connection to database
            ORMEntity <T> .Disconnect();

            // Created project is added to in-memory table
            ORMEntity <T> .AddInMemoryTable(id, instance);

            return(((ORMIdentifiableEntity)instance).ID);
        }