使用實體框架和DTO的最佳方式是什麼?ASP.NET MVC實體框架中的DTO的最佳實踐
假設映射後我有這樣的對象:
Author
int id
sting name
List<Book> books
Book
int id
string name
Author author
int authorID
我的DTO
AuthorDTO
int id
sting name
BookDTO
int id
string name
int authorID
由於作者可以有很多的書,我不希望檢索所有的人時,例如我只對作者感興趣。
但有時我可能想要得到幾個作者,過濾書籍或所有書籍。 我可以去與多個查詢AuthorDTO GetAuthor(int id)
List<BookDTO> GetBooks(int authorID)
。但是這意味着要訪問數據庫。
的方法,我看到它:
如果我在
AuthorDTO
場List<BookDTO> books
工作可以做了。但是有時我會保留這個列表爲空,例如我只列出了作者。這意味着一些不一致,混亂和需要記住的許多細節。返回
Tuple<AuthorDTO, List<BookDTO>>
它可能有點混亂。定義新的DTO。
AuthorAndBooksDTO AuthorDTO author List<BookDTO> books
在我的項目我已經結束了,像這樣的DTO:'BookDTO; int id;字符串名稱; int authorID;字符串作者姓名;'最後一個只是爲了視覺信息,它使我從另一個DB往返節省。作爲一個結論,我只是爲每個導航屬性模型添加'string Name'。 – Szer