none
DataTable的主键问题请较 RRS feed

  • 问题

  • DataAdapter = new OleDbDataAdapter("select * from [DEPORT]", Connection);
                DataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                Builder = new OleDbCommandBuilder(DataAdapter);
                Builder.QuotePrefix = "[";
                Builder.QuoteSuffix = "]";
                Ds = new DataSet();
                DataAdapter.Fill(Ds, "DEPORT");
                Ds.Tables[0].WriteXmlSchema("1.XML");
                InDataAdapter = new OleDbDataAdapter("select * from [INDEPORT]", Connection);
                InBuilder = new OleDbCommandBuilder(InDataAdapter);
                InBuilder.QuotePrefix = "[";
                InBuilder.QuoteSuffix = "]";
                InDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                InDataAdapter.Fill(Ds, "INDEPORT");
                Ds.WriteXmlSchema("3.XML");
                OutDataAdapter = new OleDbDataAdapter("select * from [OUTDEPORT]", Connection);
                OutBuilder = new OleDbCommandBuilder(OutDataAdapter);
                OutBuilder.QuotePrefix = "[";
                OutBuilder.QuoteSuffix = "]";
                OutDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                OutDataAdapter.Fill(Ds, "OUTDEPORT");
                Connection.Close();
    我在第一个ADAPTER加入第一个表时用了Ds.Tables[0].WriteXmlSchema("1.XML");可以在1.XML中看出是有主键的
    <xs:unique name="Constraint1" msdata:PrimaryKey="true">
    可当用InDataAdapter加入第个表时候Ds.WriteXmlSchema("3.XML");在3.XML中没看有主键
    这是为什么?请问有什么办法解决?
    2009年9月25日 14:29

答案

全部回复

  • 你好!
         这样试试:
    Ds.Tables[0].WriteXmlSchema("3.XML" );

    周雪峰
    2009年9月25日 15:37
    版主
  • 我不是想要序列化表,我是想用DataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
    添加表的主键,然后我调用Ds.Tables[0].WriteXmlSchema("1.XML");我从1.XML中能看到Ds.Tables[0]是包含主键的,
    但我在往DS中加表后我的第一个表为什么就没主键了 ??

    2009年9月26日 13:28
  • 而且是第一,第二两个表都没主键?这是为什么?很难理解
    2009年9月26日 13:29
  • 谢谢已经解决Ds.Tables[0].Constraints.Clear();这是我在在后面关闭DataRelation时候加上去的。。。
    2009年9月26日 14:16