public Result <int> Delete <TDataObject>(Guid identity)
            where TDataObject : class, Data.IDataObject, new()
        {
            SqlParameter[] parameters  = new SqlParameter[] { SqlServerHelper.GetSqlParameter("Identity", identity) };
            String         commandText = SqlServerHelper.PrepareCommandText <TDataObject>(CommonCommands.DeleteRecord, parameters);
            SqlCommand     command     = SqlServerHelper.GetSqlCommand(commandText, parameters);

            Result <int> result  = Result.SuccessResult <int>(0);
            TDataObject  dataObj = new TDataObject( );

            if (dataObj is Data.IDataObjectMapping)
            {
                Result <TDataObject> loadResult = this.Load <TDataObject>(identity);
                if (loadResult.IsSuccess)
                {
                    Data.IDataObjectMapping mapping = (Data.IDataObjectMapping)loadResult.ReturnValue;
                    result = this.AssertMapping(mapping, false);
                }
            }

            if (result.IsSuccess)
            {
                result = SqlServerHelper.ExecuteStatement(ref command);
            }

            return(result);
        }
        public Result <int> AssertMapping(Data.IDataObjectMapping mappedObject, bool ensureExists)
        {
            List <SqlParameter> parameters = new List <SqlParameter>( );

            parameters.AddRange(SqlServerHelper.GetSqlParameters(mappedObject, ensureExists));

            String     commandText = SqlServerHelper.PrepareCommandText(mappedObject);
            SqlCommand command     = SqlServerHelper.GetSqlCommand(commandText, parameters.ToArray( ));

            return(SqlServerHelper.ExecuteStatement(ref command));
        }
        public Result <int> Save <TDataObject>(TDataObject dataObject)
            where TDataObject : class, Data.IDataObject, new()
        {
            String commandText             = String.Empty;
            List <SqlParameter> parameters = new List <SqlParameter>( );
            SqlCommand          command;

            parameters.AddRange(SqlServerHelper.GetSqlParameters(dataObject.GetValues( )));
            commandText = SqlServerHelper.PrepareCommandText <TDataObject>(CommonCommands.SaveRecord, parameters.ToArray( ));
            command     = SqlServerHelper.GetSqlCommand(commandText, parameters.ToArray( ));

            Result <int> result = SqlServerHelper.ExecuteStatement(ref command);

            if (dataObject is Data.IDataObjectMapping)
            {
                Data.IDataObjectMapping mappedObject = (Data.IDataObjectMapping)dataObject;
                if (result.IsSuccess)
                {
                    result = this.AssertMapping(mappedObject, true);
                }
            }
            return(result);
        }
예제 #4
0
        public static IEnumerable <SqlParameter> GetSqlParameters(Data.IDataObjectMapping dataObjectMapping, bool ensureExists)
        {
            const String        ident              = "Identity";
            const String        ensureParamName    = "EnsureExists";
            List <SqlParameter> parameters         = new List <SqlParameter>( );
            String parentParameterName             = String.Format("{0}{1}", dataObjectMapping.ParentDataObjectNameSingular, ident);
            String childParameterName              = String.Format("{0}{1}", dataObjectMapping.Metadata.DataObjectNameSingular, ident);
            Dictionary <String, Object> addlParams = dataObjectMapping.GetAdditionalValues( );

            parameters.Add(GetSqlParameter(parentParameterName, dataObjectMapping.GetParentIdentity( )));
            parameters.Add(GetSqlParameter(childParameterName, dataObjectMapping.GetIdentity( )));

            if (addlParams != null)
            {
                foreach (String key in addlParams.Keys)
                {
                    parameters.Add(GetSqlParameter(key, addlParams[key]));
                }
            }

            parameters.Add(GetSqlParameter(ensureParamName, ensureExists));

            return(parameters.ToArray( ));
        }
예제 #5
0
 public static String PrepareCommandText(Data.IDataObjectMapping dataObjectMapping)
 {
     return(String.Format("[{0}].[{1}{2}{3}{4}]", dataObjectMapping.SchemaName, StoredProcedureNamePrefix, dataObjectMapping.ParentDataObjectNameSingular,
                          dataObjectMapping.Metadata.DataObjectNameSingular, "AssertMapping"));
 }