static void Main()
		{
			Console.WriteLine("C# Version");

			var dto = new UserDTO
			{
				Login = "******",
				Password = "******",
				UserRoles = new List<UserRoleDTO>
				{
					new UserRoleDTO { IdRole = 1 },
					new UserRoleDTO { IdRole = 2 }
				}
			};

			Insert(dto);

			Print();

			dto = Update(dto);

			Delete(dto);

			Console.ReadLine();
		}
		static void Insert(UserDTO dto)
		{
			var res = UnitOfWorkCaller.Context<TestDbContext>().UnitOfWorkCallSaveChanges(uow =>
			{
				uow.Repository<User, UserDTO>().Insert(dto);
			});
			Console.WriteLine(res ? "Insert ok" : "Insert failed");
		}
		static void Delete(UserDTO dto)
		{
			var res = UnitOfWorkCaller.Context<TestDbContext>().TransactionSaveChanges(uow =>
			{
				foreach (var ur in dto.UserRoles)
				{
					uow.Repository<UserRole, UserRoleDTO>().Delete(ur, ur.Id);
				}
				uow.Repository<User, UserDTO>().Delete(dto, dto.Id);
			});

			Console.WriteLine(res ? "Delete ok" : "Delete failed");
		}
		static UserDTO Update(UserDTO dto)
		{
			var res = UnitOfWorkCaller.Context<TestDbContext>().UnitOfWorkCallSaveChanges(uow =>
			{
				dto = uow.CustomRepository<UserRepository>().GetUserByLogin(dto.Login, dto.Password);
				dto.Password = "******";
				uow.CustomRepository<UserRepository>().Update(dto, dto.Id);
			});

			Console.WriteLine(res ? "Update ok" : "Update failed");

			return dto;
		}