0

环境: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 有可能吗?

4

1 回答 1

0

即使在实体框架中,它也不会获取所有相关实体。当您尝试访问实体时它会延迟加载实体,这会导致额外的查询,或者您必须专门Include指定您想要急切获取的实体的路径。

也许您应该为每个类添加一些逻辑,以便它知道如何获取自己的相关模型?这样模型 A 不必知道模型 B、C 和 D。它可能只需要知道模型 B。而模型 B 知道模型 C 等。

您只需要划分代码,以便每个实体都知道如何获取与其直接相关的模型。

虽然我个人认为这是矫枉过正,但如果您只想从两个不同的表中获取数据,您可能应该只使用 SQLJOIN并使用SqlDataReader.

于 2013-10-09T20:54:29.070 回答