C# 如何使用ADO.net在视图中包含相关对象

C# 如何使用ADO.net在视图中包含相关对象,c#,sql,asp.net-mvc,linq,ado.net,C#,Sql,Asp.net Mvc,Linq,Ado.net,我正在使用C#和ASP.NET MVC。通常我也使用实体框架,但最近我一直在使用ADO.net和SQL。我的ADO.NET代码有一个问题:在实体框架/LINQ中,为了解决这个问题,我会使用Include关键字将相关数据包含到视图中,这样我就不会得到对象非引用错误,所以问题是如何使用ADO.NET来实现这一点,ADO.NET中的LINQInclude关键字的等价物是什么SQL Include关键字的代码示例: private Comment GetComment(int? id) {

我正在使用C#和ASP.NET MVC。通常我也使用实体框架,但最近我一直在使用ADO.net和SQL。我的ADO.NET代码有一个问题:在实体框架/LINQ中,为了解决这个问题,我会使用
Include
关键字将相关数据包含到视图中,这样我就不会得到对象非引用错误,所以问题是如何使用ADO.NET来实现这一点,ADO.NET中的LINQ
Include
关键字的等价物是什么SQL

Include关键字的代码示例:

private Comment GetComment(int? id)       
{
     return id.HasValue ? Db.Comments.Where(x=> x.ID == id)
                                     .Include(y => y.Replies)
                                     .First() : new Comment { ID = -1 };
}
正如您从评论中看到的,我也正在加载来自另一个表的回复,它们是相关的


如何在ADO.Net和SQL中实现这一点?

我认为问题在于我使用include的经验意味着实体

因此,在你的情况下:

Db.Comments.Where(x => x.ID == id)
           .Include("Replies")
           .First() : new Comment { ID = -1 };
在中,您的数据模型应为以下关系:

public class Comments
{
    private readonly ObservableListSource<Replies> _replies =
                       new ObservableListSource<Replies>();
    
    public int ID { get; set; }
    // (other attributes)
    
    public virtual ObservableListSource<Replies> Replies
    { get { return replies; } }
}
公共类注释
{
私有只读ObservableListSource\u回复=
新的observeListSource();
公共int ID{get;set;}
//(其他属性)
公共虚拟可观察列表源答复
{获取{返回回复;}}
}

您需要将SQL语句中的两个表连接起来。我已经连接了,问题是如何将连接的数据正确地传递给模型。例如,我有注释,注释在其模型中有一个回复列表,视图类型为comments。我如何将回复传递给注释模型??仔细想想,在评论模型中,我会有一个回复对象列表,当数据来自读卡器,我在其中循环时,我可以很容易地填充评论,但无法填充回复,因为我无法将回复数据传递给回复类型的对象,因为我只能将数据传递给普通字段。您需要一个组合的“viewmodel”可以保存从联接查询返回的所有数据的排序您基本上是在执行原始SQL查询,因此您必须执行所有对象创建。这就是为什么存在ORM。为什么要使用ADO.Net?