Skip to content

DoloSoftware/PicnicOrm.Dapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build status

PicnicOrm

A ORM configuration based library with a Dapper based implementation.

There is an example project in the solution.

Example usage:

public void ConfigureDataBroker()
{
	//Map Address to User
	var userAddressMap = new OneToOneMapping<User, Address>(address => address.Id, user => user.AddressId, 
		(user, address) => user.Address = address);

	//Map Address to Employer & Employer to User
	var employerAddressMap = new OneToOneMapping<Employer, Address>(address => address.Id, 
		employer => employer.AddressId, (employer, address) => employer.Address = address);
	var userEmployerMap = new OneToOneMapping<User, Employer>(employer => employer.Id, user => user.EmployerId,
		(user, employer) => user.Employer = employer);
	userEmployerMap.AddMapping(employerAddressMap);

	//Map Car to user
	var userCarMap = new ManyToManyMapping<User, Car, UserCar>(car => car.Id, 
		userCar => userCar.CarId, 
		userCar => userCar.UserId,
		(user, cars) =>
		{
			foreach (var car in cars)
			{
				user.Cars.Add(car);
				car.Users.Add(user);
			}
		});

	//User Mapping
	var userMap = new ParentMapping<User>(user => user.Id);
	userMap.AddMapping(userAddressMap);
	userMap.AddMapping(userEmployerMap);
	userMap.AddMapping(userCarMap);

	var dataBroker = new SqlDataBroker(@"CONNECTION_STRING", new DapperGridReaderFactory());
	dataBroker.AddMapping(userMap);

	//Add the databroker to your favorite IoC container
}
	
public class UserRepository
{
	public IEnumerable<User> GetUsersBornAfter(DateTime date)
	{
		var parameterList = new List<IDbParameter>();
		parameterList.Add(new DbParameter("BirthDate", date, DbType.Date));

		return this.DataBroker.ExecuteStoredProcedure<User>("dbo.ReadUser", parameterList);
	}
}

About

An ORM using Dapper under the covers

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published