static void Expando_Expand()
		{
			Beer beer = new Beer() { Name = "Sly Fox IPA" };
			Glass glass = new Glass() { Ounces = 32 };

			// create an expando and combine the objects
			FastExpando x = beer.Expand();
			x.Expand(glass);

			// look! a dynamic object
			dynamic d = x;
			Console.WriteLine("{0}", d.Name);
			Console.WriteLine("{0}", d.Ounces);
		}
		static void Expando_TransformList()
		{
			Beer ipa = new Beer() { Name = "IPA" };
			Database.Connection().ExecuteSql("INSERT INTO Beer (Name) VALUES (@Name)", ipa);

			var mapping = new Dictionary<string, string>() { { "Name", "TheName" } };
			foreach (dynamic beer in Database.Connection().QuerySql("SELECT * FROM Beer WHERE Name = @Name", new { Name = "IPA" }).Transform(mapping))
				Console.WriteLine(beer.TheName);

			Database.Connection().ExecuteSql("DELETE FROM Beer WHERE Name = @Name", ipa);
		}
		static void Async_Execute()
		{
			Beer beer = new Beer() { Name = "Sly Fox IPA" };

			Task task = Database.Connection().ExecuteAsync("InsertBeer", beer);

			// do stuff

			task.Wait();
		}
		static void ObjectHierarchy()
		{
			Beer beer = new Beer() { Name = "Sly Fox IPA", Flavor = "yummy", OriginalGravity = 4.2m };
			Glass glass = new Glass() { Name = "Pilsner", Ounces = 16 };

			Database.Connection().Insert("InsertBeer", beer);
			Database.Connection().Insert("InsertGlass", glass);

			Serving serving = new Serving() { When = DateTime.Parse("1/1/2012") };
			serving.Beer = beer;
			serving.Glass = glass;
			Database.Connection().Insert("InsertServing", serving);

			var servings = Database.Connection().QuerySql<Serving, Beer, Glass>("SELECT s.*, b.*, g.* FROM Servings s JOIN Beer b ON (s.BeerID = b.ID) JOIN Glasses g ON (s.GlassesID = g.ID)", Parameters.Empty);
			foreach (var s in servings)
				Console.WriteLine("{0} {1} {2}", s.When, s.Beer.Name, s.Glass.Ounces);
		}
		static void Insert_Sql()
		{
			Beer beer = new Beer()
			{
				Name = "HopDevil",
				Flavor = "Hoppy",
				OriginalGravity = 0.62m
			};

			var insertedBeer = Database.Connection().InsertSql("INSERT INTO Beer (Name, Details) VALUES (@Name, @Details) SELECT SCOPE_IDENTITY() AS [Id]", beer);
		}
		static void Dynamic_ForEach()
		{
			Beer ipa = new Beer() { Name = "IPA" };
			Database.Connection().ExecuteSql("INSERT INTO Beer (Name) VALUES (@Name)", ipa);

			Database.Connection().ForEachDynamicSql("SELECT * FROM Beer WHERE Name = @Name", new { Name = "IPA" },
				beer =>
				{
					beer.OriginalGravity = 4.2m;

					// extension methods cannot be dynamically dispatched, so we have to cast it to object
					// good news: it still works
					Database.Connection().ExecuteSql("UPDATE Beer Set OriginalGravity = @OriginalGravity WHERE Name = @Name", (object)beer);
				});

			Database.Connection().ExecuteSql("DELETE FROM Beer WHERE Name = @Name", ipa);
		}
		static void ExecuteSql()
		{
			Beer beer = new Beer() { Name = "IPA" };

			// map a beer the stored procedure parameters
			Database.Connection().ExecuteSql("INSERT INTO Beer (Name) VALUES (@Name)", beer);

			// map an anonymous object to the stored procedure parameters
			Database.Connection().ExecuteSql("DELETE FROM Beer WHERE Name = @Name", new { Name = "IPA" });
		}
Beispiel #8
0
 static void Drink(Beer b)
 {
     Console.WriteLine("YUM");
 }
		/// <summary>
		/// Asynchronously updates a single Beer in the repository.
		/// </summary>
		/// <param name="beer">The Beer to upsert.</param>
		/// <returns>A task representing the completion of the operation.</returns>
		public Task UpsertBeerAsync(Beer beer)
		{
			return _connectionFactory().InsertAsync("UpsertBeer", beer);
		}
Beispiel #10
0
		static void Execute()
		{
			Beer beer = new Beer() { Name = "IPA" };

			// map a beer the stored procedure parameters
			Database.Connection().Insert("InsertBeer", beer);

			// map an anonymous object to the stored procedure parameters
			Database.Connection().Execute("DeleteBeer", beer);
		}
		/// <summary>
		/// Asynchronously updates a single Beer in the repository.
		/// </summary>
		/// <param name="beer">The Beer to update.</param>
		/// <returns>A task representing the completion of the operation.</returns>
		public Task UpdateBeerAsync(Beer beer)
		{
			return _connectionFactory().ExecuteAsync("UpdateBeer", beer);
		}
		/// <summary>
		/// Upserts a single Beer in the repository.
		/// </summary>
		/// <param name="beer">The Beer to update.</param>
		public void UpsertBeer(Beer beer)
		{
			_connectionFactory().Insert("UpsertBeer", beer);
		}
		/// <summary>
		/// Updates a single Beer in the repository.
		/// </summary>
		/// <param name="beer">The Beer to update.</param>
		public void UpdateBeer(Beer beer)
		{
			_connectionFactory().Execute("UpdateBeer", beer);
		}
Beispiel #14
0
		static void Drink (Beer b)
		{
			Console.WriteLine("YUM");
		}
Beispiel #15
0
		static void CommonParameter_Transaction()
		{
			using (var connection = Database.Connection().OpenWithTransaction())
			{
				Beer beer = new Beer("Sly Fox IPA");
				connection.Execute("InsertBeer", beer);

				// without a commit this rolls back
			}
		}
Beispiel #16
0
		private static void Repository()
		{
			IBeerRepository repo = Database.As<IBeerRepository>();

			// single object operations
			Beer b = new Beer() { Name = "Double IPA", Flavor = "IPA" };
			repo.InsertBeer(b);
			b.Name = "Tripel IPA";
			repo.UpdateBeer(b);
			repo.UpsertBeer(b);

			int totalRows;
			var results = repo.FindBeersByFlavor("IPA", out totalRows);

			repo.DeleteBeer(b.Id);

			// multiple object operations
			Beer b2 = new Beer() { Name = "Tripel IPA" };
			Beer b3 = new Beer() { Name = "Quad IPA (eek!)" };
			List<Beer> beers = new List<Beer>() { b, b2 };
			repo.InsertBeers(beers);
			beers.Add(b3);
			repo.UpsertBeers(beers);

			// wildcard find
			IList<Beer> ipas = repo.FindBeers(new { Name = "%IPA%", NameOperator = "LIKE" });
			Console.WriteLine("There are {0} IPAs in the database", ipas.Count);

			// clean up
			repo.DeleteBeers(beers.Select(beer => beer.Id));

			// create a receipt
			Receipt r = new Receipt() { Id = 1, Name = "John Smith" };
			repo.UpsertReceipt(r);
			repo.DeleteReceipt(r.Id);
		}
Beispiel #17
0
		static void CommonParameter_Transaction()
		{
			using (SqlConnection connection = Database.Open())
			using (SqlTransaction t = connection.BeginTransaction())
			{
				Beer beer = new Beer("Sly Fox IPA");
				connection.Execute("InsertBeer", beer, transaction: t);

				// without a commit this rolls back
			}
		}