Passing parameters

Parameters can be passed to alter transformations by:

  • using AddTransformerParameter in session Query
  • using SetTransformerParameters in session DocumentQuery
  • filling TransformerParameters in IndexQuery that can be used in commands Query
  • passing parameters directly in various Get methods from commands

To access passed parameters from within a transformer, use one of the two available methods: Parameter or ParameterOrDefault. The difference between those two methods is that Parameter will throw if the parameter is not supplied, and ParameterOrDefault will use the default value.

public class Employees_BirthDay : AbstractTransformerCreationTask<Employee>
{
	public class Result
	{
		public string FirstName { get; set; }

		public string LastName { get; set; }

		public string BirthDay { get; set; }
	}

	public Employees_BirthDay()
	{
		TransformResults =
			employees =>
			from employee in employees
			// if no parameter is passed use 't' format
			let dateFormat = ParameterOrDefault("DateFormat", "t").Value<string>()
			select new
			{
				FirstName = employee.FirstName,
				LastName = employee.LastName,
				BirthDay = employee.Birthday.ToString(dateFormat)
			};
	}
}

IList<Employees_BirthDay.Result> results = session
	.Query<Employee>()
	.TransformWith<Employees_BirthDay, Employees_BirthDay.Result>()
	.AddTransformerParameter("DateFormat", "D")
	.ToList();