奇怪:我的DataSet怎么对DataRelation不感冒?

Goofyyang 2003-07-16 11:00:38
大家能帮我在你的机器上试试下面的代码吗?我机器上的输出是:

Number of relations:0

可这明显是不对的呀?怎么刚刚建成的Relation就没了呢?(我在其它的程序中也发现了这个问题,比如说通过DataSet.ReadXml()方法读入xml文件后,源xml文件中的Relation全反应不出来)


using System;
using System.Data;
using System.Data.SqlClient;

namespace StrangeStrangeQuestion
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
SqlConnection conn=new SqlConnection("Server=127.0.0.1;Database=Northwind;Integrated Security=SSPI");
conn.Open();

SqlDataAdapter daCustomer=new SqlDataAdapter("Select top 1 * from Customers", conn);
SqlDataAdapter daOrder=new SqlDataAdapter("select top 1 * from Orders", conn);

DataSet ds=new DataSet("CustomerOrder");
daCustomer.Fill(ds, "Customer");
daOrder.Fill(ds, "Order");
conn.Close();

DataRelation drCustomerOrder=new DataRelation("relationCustomerOrder",
ds.Tables["Customer"].Columns["CustomerID"],
ds.Tables["Order"].Columns["CustomerID"]);

Console.WriteLine("Number of relations: {0}",ds.Relations.Count.ToString());

Console.ReadLine();
}
}
}
...全文
97 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Goofyyang 2003-07-17
哦,我明白了,是因为我用了select top 1 ....,这样选取出来的结果肯定无法对应,所以就出错了(没有办法,为了省内存),把上面改成select * ...就OK了!谢谢二位!
  • 打赏
  • 举报
回复
Goofyyang 2003-07-17
谢谢二位的解答,是我太粗心了:(

可我把这一行加上去后还是有问题:只要一访问ds.Relations就会报错,说“不能启用此约束,因为不是所有的值都具有相应的父值。”,这是怎么回事呀?

(我在调试时可以看到ds.Relations.Count=1,可就是一到ds.Relations这里就报错)
  • 打赏
  • 举报
回复
雪狼1234567 2003-07-16
ds.Relations.Add(drCustomerOrder);
  • 打赏
  • 举报
回复
saucer 2003-07-16
ds.Relations.Add(drCustomerOrder);

:-)
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.7w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
申请成为版主
帖子事件
创建了帖子
2003-07-16 11:00
社区公告

让您成为最强悍的C#开发者