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