using System.Collections.Generic;
using System.Data;
using System.Data.Objects.DataClasses;
using AutoMapper;
using Model = AdventureWorksModel;
using EntityModel = AdventureWorksEntityModel;
namespace AdventureWorksModel.Mapping
{
public static class ObjectMapping
{
private static void CreateMap<D, E>()
where D : PocoBase
where E : EntityObject
{
Mapper.CreateMap<D, E>();
Mapper.CreateMap<PocoReference<D>, EntityReference<E>>().ConvertUsing<PocoReferenceToEntityReference<D, E>>();
Mapper.CreateMap<E, D>();
Mapper.CreateMap<EntityReference<E>, PocoReference<D>>().ConvertUsing<EntityReferenceToPocoReference<E, D>>();
}
public static void LoadObjectMapping()
{
// Poco To Entity
Mapper.CreateMap<PocoKey, EntityKey>().ConvertUsing<PocoKeyToEntityKey>();
Mapper.CreateMap<KeyValuePair<string, object>, EntityKeyMember>().ConvertUsing<KeyValuePairToEntityKeyMember>();
// Entity To Poco
Mapper.CreateMap<EntityKey, PocoKey>().ConvertUsing<EntityKeyToPocoKey>();
Mapper.CreateMap<EntityKeyMember, KeyValuePair<string, object>>().ConvertUsing<EntityKeyMemberToKeyValuePair>();
// General
CreateMap<Model.Address, EntityModel.Address>();
CreateMap<Model.AddressType, EntityModel.AddressType>();
CreateMap<Model.Contact, EntityModel.Contact>();
CreateMap<Model.Customer, EntityModel.Customer>();
CreateMap<Model.CustomerAddress, EntityModel.CustomerAddress>();
CreateMap<Model.Document, EntityModel.Document>();
CreateMap<Model.Individual, EntityModel.Individual>();
CreateMap<Model.Product, EntityModel.Product>();
CreateMap<Model.ProductCategory, EntityModel.ProductCategory>();
CreateMap<Model.ProductDocument, EntityModel.ProductDocument>();
CreateMap<Model.ProductModel, EntityModel.ProductModel>();
CreateMap<Model.ProductModelIllustration, EntityModel.ProductModelIllustration>();
CreateMap<Model.ProductPhoto, EntityModel.ProductPhoto>();
CreateMap<Model.ProductProductPhoto, EntityModel.ProductProductPhoto>();
CreateMap<Model.ProductSubcategory, EntityModel.ProductSubcategory>();
CreateMap<Model.PurchaseOrderDetail, EntityModel.PurchaseOrderDetail>();
CreateMap<Model.PurchaseOrderHeader, EntityModel.PurchaseOrderHeader>();
CreateMap<Model.SalesOrderDetail, EntityModel.SalesOrderDetail>();
CreateMap<Model.SalesOrderHeader, EntityModel.SalesOrderHeader>();
CreateMap<Model.ShipMethod, EntityModel.ShipMethod>();
CreateMap<Model.StateProvince, EntityModel.StateProvince>();
CreateMap<Model.Store, EntityModel.Store>();
CreateMap<Model.WorkOrder, EntityModel.WorkOrder>();
CreateMap<Model.WorkOrderRouting, EntityModel.WorkOrderRouting>();
}
}
}