This contains some useful extensions I've used with AutoMapper and EF6. Instead of this:
You can do this instead:
Mapper.CreateMap<Employee, EmployeeDto>() .ForMember(d => d.FullName, opt => opt.MapFrom(src => src.FirstName + " " + src.LastName)); var employees = await db.Employees.ProjectTo<EmployeeDto>().ToListAsync();
public class Employee { [Computed] public string FullName { get { return FirstName + " " + LastName; } } } Mapper.CreateMap<Employee, EmployeeDto>(); var employees = await db.Employees.ProjectToListAsync<EmployeeDto>();
Entity FrameWork DbContext وDependency Injection و DbContextScope
301, MovedPermanently
یکی از متداولترین الگوهای امروزی برای رفع وابستگی به یک سرویس در یک Object وابسته به ان سرویس الگوی Dependency Injection میباشد . در این الگو , وابستگی به سایر کلاسها , به صورت اتوماتیک به داخل سرویس مورد نظر تزریق میشود و نیاز به نمونه گیری و ساخت Object از ان وابستگی به صورت Explicit نیست . این الگو در مهندسی نرم افزار فوایدیی (Refactoring , کنترل LifeTime اشیاء , ...) دارد که مرتبط با موضوع این مقاله نیست , اما نحوه صحیح نمونه گیریی از DbContext با الگوی Dependency Injection در انواع برنامهها اعم از وب یا دسکتاپ موضوع اصلی این مقاله میباشد.