public SetPositionCommand(ITypeFactory typeFactory, ProjectionInstance instance) { Contract.Requires(typeFactory != null); Contract.Requires(instance != null); _result = new SqlParameter("result", SqlDbType.Int) { Direction = ParameterDirection.ReturnValue }; _command = CreateSqlCommand(typeFactory, instance); }
public Task SetPositionAsync(ProjectionInstance instance) { // establish command var command = new SetPositionCommand(_typeFactory, instance); // create connection using (var conn = new SqlConnection(_connectionString)) { // connection needs to be open before executing conn.Open(); // execute return(command.ExecuteAsync(conn)); } }
private SqlCommand CreateSqlCommand(ITypeFactory typeFactory, ProjectionInstance instance) { var sqlCommand = new SqlCommand("[dbo].[SetProjectionPosition]"); sqlCommand.CommandType = CommandType.StoredProcedure; // set return parameter sqlCommand.Parameters.Add(_result); var projectionType = instance.ProjectionType; // set parameters sqlCommand.Parameters.Add("@projectionTypeId", SqlDbType.Binary, 16).Value = typeFactory.GetHash(projectionType.Type); sqlCommand.Parameters.Add("@projectionTypeFullName", SqlDbType.VarChar, 512).Value = projectionType.Type.FullName; sqlCommand.Parameters.Add("@eventProviderId", SqlDbType.UniqueIdentifier).Value = instance.EventProviderIdentity.Value; sqlCommand.Parameters.Add("@eventProviderVersion", SqlDbType.Int).Value = instance.Position.Value; return(sqlCommand); }
internal Projection CreateProjection(ProjectionInstance instance) { return (constructor ?? GetConstructor()) (instance); }