-1

AutoMapper は初めてで、アプリケーションの Service Layer の CustomerService に次の手動マッピングがあります。同等の AutoMapper マッピング コードを見つけようとしましたが、ネストされた複雑なオブジェクトとコレクションが原因でできませんでした。助けてください私はこの問題を解決するために

ここで CustomerService からのコード: Service.Customer は DataContract であり、 Data.Customer はエンティティです

public Service.Customer GetCustomer(string customerID)
    {
        Data.Customer customer
            = _northwindEntities
                .Customers.Single(
                    c => c.CustomerID == customerID);
        return new Service.Customer
                   {
                       CustomerID = customer.CustomerID,
                       CompanyName = customer.CompanyName,
                       ContactName = customer.ContactName,
                       Address = customer.Address,
                       City = customer.City,
                       Country = customer.Country,
                       Region = customer.Region,
                       PostalCode = customer.PostalCode,
                       Phone = customer.Phone,
                       Orders 
                        = GetOrders(customer.Orders)
                   };
    }

Service.Order は DataContract であり、Data.Order はエンティティです ...

private static IEnumerable<Service.Order> GetOrders(
        IEnumerable<Data.Order> order)
    {
        return order.Select(o => new Service.Order
            {
                OrderID = o.OrderID,
                OrderDate = o.OrderDate,
                OrderDetails = GetOrderDetails(o),
                Freight = o.Freight,
                ShippedDate = o.ShippedDate
            }).ToList();
    }

Service.OrderDetail は DataContract であり、Data.Order はエンティティです ...

private static IEnumerable<Service.OrderDetail> GetOrderDetails(
        Data.Order order)
    {

        return order.Order_Details.Select(
            o => new Service.OrderDetail
            {
                Product 
                    = new Service.Product
                    {
                        ProductID 
                            = o.Product.ProductID,
                        ProductName 
                            = o.Product.ProductName
                    },
                Quantity = o.Quantity,
                UnitPrice = o.UnitPrice
            }).ToList();
    }

したがって、OrderDetails は Oreders 内にネストされ、Orders は Customer 内にネストされます ...AutoMapper を使用してこの階層を反映する方法 よろしくお願いします

4

1 に答える 1

0

親クラスとすべてのネストされたクラスのマッピングを定義する必要があります。その後、要件に従ってカスタマイズできます

 Mapper.CreateMap<Data.Customer, Service.Customer>();
 Mapper.CreateMap<Data.Order, Service.Order>();
 Mapper.CreateMap<Data.OrderDetails, Service.OrderDetails>();
 Mapper.CreateMap<Data.Product, Service.Product>();   

これを見てください

http://automapper.codeplex.com/wikipage?title=ネストされた%20Mappings

于 2013-07-31T03:34:27.027 に答える