- EF, , , , 100% . , , , , .
, EF , , , , .
, Pencil Boxes.Pencils, ICollection Table.Pencils, , .
MVC-.
, , -, Data Entity, , Data Entity - , JSON/XML.
:
mapper/encoder, / :
, , / . , .
mapper/encoder,
- , Pencil, . , , stackoverflow, .
/
- , , stackoverflow. , , , , , .
-
, , - - . , - .
:
public class BusinessTable
{
public int TableID{ get; set; }
public IEnumerable<Box> Boxes{ get; set; }
public IEnumerable<PencilCases> PencilCases{ get; set; }
}
public class BusinessBox
{
public int BoxID{ get; set; }
public int TableID{ get; set; }
public IEnumerable<Pencils> Pencils{ get; set; }
}
public class BusinessPencilCases
{
public int PencilCaseID{ get; set; }
public int? BoxID{ get; set; }
public int TableID{ get; set; }
}
public class BusinessPencils
{
public int PencilID{ get; set; }
public int? PencilCaseID{ get; set; }
public int? BoxID{ get; set; }
public int TableID{ get; set; }
}
, -, .
theres 2: / factory Factory, ValueInjecter AutoMapper - NuGet.
AutoMapper:
AutoMapper, , :
Mapper.CreateMap<Table, BusinessTable>();
Mapper.CreateMap<Box, BusinessBox>();
Mapper.CreateMap<PencilCases, BusinessPencilCases>();
Mapper.CreateMap<Pencils, BusinessPencils>();
:
var tables = unitOfWork.TableRepository.Get(includeProperties: "Boxes, PencilCases, Boxes.Pencils");
var result = Mapper.Map<IEnumerable<Table>, IEnumerable<BusinessTable>>(tables);
var tables = unitOfWork.TableRepository.Get(includeProperties: "Boxes, PencilCases, Boxes.Pencils").Project().To<IEnumerable<BusinessTable>;
, AutoMapper (, ): https://github.com/AutoMapper/AutoMapper/wiki/Getting-started
ValueInjecter:
var tables = unitOfWork.TableRepository.Get(includeProperties: "Boxes, PencilCases, Boxes.Pencils");
var result = new List<BusinessTable>().InjectFrom(tables);
:
var tables = unitOfWork.TableRepository.Get(includeProperties: "Boxes, PencilCases, Boxes.Pencils");
var result = tables.Select(x => new BusinessTable.InjectFrom(x).Cast<BusinessTable>());
ValueInjection, SmartConventionInjection, , ORM ValueInjecter.
, , Github
, MaxDepthCloneInjector ( , ) , , .
:
- , . SO: Include
- , , : STICK WITH EAGER LOADING, Lazy Loading N + 1. :
- Eager Loading, , , Web Api , .
,
Felix