我的DataSet..Relations.Count怎么总中0?
我写了个练习在输出 Response.Write(ds.Relations.Count); 总为 0!!代码如下:而且,在用DataTable.Rows.Find(key); 想找到相应主键所地行时,总是提示该表没有主键!
代码以及数据库如下:
----------------数 据 库--------------
CREATE DATABASE test
GO
USE test
GO
CREATE TABLE movieKind
(
movieKindId INT IDENTITY(1,1)PRIMARY KEY,
movieKindTitle VARCHAR(50)
)
GO
INSERT INTO movieKind VALUES ('讯雷下载')
INSERT INTO movieKind VALUES ('BT种子')
GO
CREATE TABLE movie
(
id INT IDENTITY(1,1) PRIMARY KEY,
kindId INT FOREIGN KEY REFERENCES movieKind(movieKindId),
title VARCHAR(50)
)
GO
INSERT INTO movie VALUES (1,'讯雷下载的片子')
INSERT INTO movie VALUES (2,'BT下载的片子')
GO
-------------ASP.NET前台代码---------------
<asp:GridView ID="GridView1" runat="server" AutoGenerateDeleteButton="True"
DataKeyNames="movieKindId" onrowdeleting="GridView1_RowDeleting">
</asp:GridView>
<asp:GridView ID="GridView2" runat="server">
</asp:GridView>
-------------ASP.NET后台代码---------------
private void mybind()
{
string connectionString1 = "server=(local);uid=sa;pwd=lkf6505563;database=test";
string strSq = "SELECT * FROM [movieKind]";
SqlConnection con = new SqlConnection(connectionString1);
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(strSq, con);
DataSet ds = new DataSet();
sda.Fill(ds, "t1");
UniqueConstraint uc = new UniqueConstraint("ucName", ds.Tables["t1"].Columns["movieKindId"], true);
sda.SelectCommand = new SqlCommand("SELECT * FROM [movie]", con);
sda.Fill(ds, "t2");
ForeignKeyConstraint fk = new ForeignKeyConstraint("fkName",//约束名
ds.Tables["t1"].Columns["movieKindId"],//主表的列
ds.Tables["t2"].Columns["kindId"]);//从表被约束的列
ds.Tables["t2"].Constraints.Add(fk);
Session["ds"] = ds;
Response.Write(ds.Relations.Count);
this.GridView1.DataSource = ds.Tables["t1"];
this.GridView1.DataBind();
this.GridView2.DataSource = ds.Tables["t2"];
this.GridView2.DataBind();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
DataSet ds = (DataSet)Session["ds"];
string key = this.GridView1.DataKeys[e.RowIndex].Value.ToString();
DataRow dr = ds.Tables["t1"].Rows.Find(Convert.ToInt32(key));
ds.Tables["t1"].Rows.Remove(dr);
this.GridView1.DataSource = ds.Tables["t1"];
this.GridView1.DataBind();
this.GridView2.DataSource = ds.Tables["t2"];
this.GridView2.DataBind();