Diskuze: Data Transfer Object vysvětlení

C# .NET .NET (C# a Visual Basic) Data Transfer Object vysvětlení American English version English version

Avatar
Milan Nakonečný:

Ahoj, pořád nevím, jestli jsem pochopil DTO správně, takže uvedu příklad.

Mám WPF MVVM aplikaci. V ní DataGrid, v kterém chci zobrazit data z databáze. Vytvořím si např třídu s názvem DataService a v ní například tuhle metodu, kterou zavolám pokaždé, když budu chtít získat data z databáze do ObservableCollec­tion, nabindovaný na datagrid. Zároveň v té samé třídě budu provádět další operace s databází a jen vracet kolekce.

public IEnumerable<ReceiptData> GetReceipts()
        {
            using (var dc = CreateDataContext())
            {
                return dc.Receipts.Select(r => new ReceiptData()
                {
                    Id = r.Id,
                    CreatedDate = r.CreatedDate,
                    Items = r.Items.Select(i => new ReceiptItemData()
                    {
                        Id = i.Id,
                        Name = i.Name,
                        PriceListItemId = i.PriceListItemId,
                        UnitPrice = i.UnitPrice,
                        Amount = i.Amount
                    })
                }).ToList();
            }
        }
 
Odpovědět 15.12.2015 9:42
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:

DTO je přepravka dat. V softwaru představuje obecně "data", která se pohybují v aplikaci. Jsou to jediné datové schránky, které se mohou pohybovat po jakékoliv vrstvě aplikace - jelikož jsou tak abstraktní, že nejsou závislé na implementaci Frontendu / Backendu / Data Access Layer.

Ve vašem případě máte něco jako servisu a v ní metodu, která vytáhne z DALU (EF) data,.. před vrácením je správně mapujete na obecný objekt (DTO). V tomto ohledu to tedy chápete správně ;-)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 17.12.2015 13:11
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.