繁体   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