class MSSqlDataManager : DataManager { public MSSqlDataManager() : base(new SqlConnection("ConnectionString here")) { } }
public class Product { public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } public int? Price { get; set; } } ... using (var dm = new MSSqlDataManager()) { List<Product> res = dm.Procedure("Test").GetList<Product>(); }
SELECT p.Id, p.Name, p.[Description], p.Price FROM dbo.Product p
SELECT p.Id , p.Name, , p.[Description] , p.Price , StorageId = s.Id , StorageName = s.Name FROM dbo.Product p INNER JOIN dbo.Storages s ON s.Id = p.StorageId WHERE p.Id = @Id; SELECT c.Id , c.Body , c.WriteDate , UserId = u.Id , UserName = u.Name , UserLocationId = l.Id , UserLocationName = l.Name , c.ProductId FROM dbo.Comments c INNER JOIN dbo.Users u ON u.Id = c.UserId INNER JOIN dbo.Locations l ON l.Id = u.LocationId WHERE c.ProductId = @Id;
Product res = dm.Procedure("Test").AddParams(new { id = 10 }).Get<Product, ProductComment>(p => p.Comments);
public class UserLocation { public int Id { get; set; } public string Name { get; set; } } public class UserModel { public int Id { get; set; } public string Name { get; set; } public UserLocation Location { get; set; } public UserModel() { this.Location = new UserLocation(); } } public class ProductComment { public int Id { get; set; } public string Body { get; set; } public DateTime WriteDate { get; set; } public UserModel User { get; set; } public int ProductId { get; set; } public ProductComment() { this.User = new UserModel(); } } public class ProductStorage { public int Id { get; set; } public string Name { get; set; } } public class Product { public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } public int? Price { get; set; } public ProductStorage Storage { get; set; } public List<ProductComment> Comments { get; set; } public Product() { this.Storage = new ProductStorage(); this.Comments = new List<ProductComment>(); } }
List<Product> res = dm.Procedure("Test") .GetList<Product, ProductComment>( (parents, detail)=>parents.First(p => p.Id == detail.ProductId).Comments );
List<Product> res = dm.Procedure("Test") .GetList<Product>( (dr, parents) => { parents.Where(p=>p.Id == (int)dr["ProductId"]).First().Comments .Add(dm.Create<ProductComment>(dr)); }, (dr, parents) => { }, ... );
dm.Procedure("Test") .Raw(dr => { while (dr.Read()) { ... } });
dm.AddParams(new { id = 10, name = "stringparam", writeDate = DateTime.Now }) ...
dm.AddEnumerableParam("Details", Enumerable.Range(1, 10) .Select(e => new {id = e, name = string.Concat("Name", e.ToString())}) );
Source: https://habr.com/ru/post/218225/
All Articles