簡體   English   中英

使用經典ado.net加載相關實體

[英]load related entities using classic ado.net

環境:WPF + MVVM +存儲庫模式+經典ADO.NET + SQL
背景:為簡單起見,我們考慮數據庫中只有2個表,即User和UserType。

桌子

<i>User</i> : Id, Username, TypeId(fk ref UserType.Id)  
<i>UserType</i> : Id (pk), TypeName  

楷模

public class User {  
public int Id {get;set;}  
public string Username {get;set;}    
public UserType Type {get;set;}  
}  

public class UserType {  
public int Id {get;set;}  
public string TypeName {get;set;}  
}

問題:
使用經典ado.net(不是EF或LINQ)加載相關實體的最佳方法是什么? 我是否必須在SQL proc中聯接User和UserType表,然后在代碼中填充每個相關實體? 但這似乎很乏味,因為相關實體本身可能具有幾個相關實體,例如A-> B-> C-> D等。

當我們使用EF時,在調試器中,我們實際上可以查看當前一個的所有相關實體到任何級別。 經典ado.net有可能嗎?

即使在實體框架中,它也不會獲取所有相關實體。 當您嘗試訪問實體時,它會延遲加載實體,這會導致其他查詢,或者您必須專門Include要熱切獲取的實體的路徑。

也許您應該為每個類添加一些邏輯,以便它知道如何獲取自己的相關模型? 這樣,模型A不必了解模型B,C和D。它可能只需要了解模型B。而模型B則了解模型C等。

您只需要對代碼進行分隔,以便每個實體都知道如何獲取與其直接相關的模型。

雖然我個人認為這太過分了,但是如果您只想從兩個不同的表中獲取數據,則可能應該只使用SQL JOIN並使用SqlDataReader遍歷結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM