Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Помощь новичку в ADO.NET


Автор: maxfol 1.12.2009, 23:17
Есть две таблицы "Студенты" и "Оценки". В таблице "Студенты" есть PK "ID". В таблице "Оценки" нет ключа. при попытке создать Relation между "ID" и "StudentID"   
выкидывает Exeption. 

Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace dsStudents
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet studentList = new DataSet();
            DataTable sInfo = new DataTable("Students");
            DataTable sGrade = new DataTable("Student Grade");

            DataColumn dc = new DataColumn();
            dc.ColumnName = "ID";
            dc.DataType = typeof(System.String);
            sInfo.Columns.Add(dc);

            dc = new DataColumn();
            dc.ColumnName = "FName";
            dc.DataType = typeof(System.String);
            sInfo.Columns.Add(dc);

            dc = new DataColumn();
            dc.ColumnName = "LName";
            dc.DataType = typeof(System.String);
            sInfo.Columns.Add(dc);

            dc = new DataColumn();
            dc.ColumnName = "StudentID";
            dc.DataType = typeof(System.String);
            sGrade.Columns.Add(dc);

            dc = new DataColumn();
            dc.ColumnName = "Prof";
            dc.DataType = typeof(System.String);
            sGrade.Columns.Add(dc);

            dc = new DataColumn();
            dc.ColumnName = "Grade";
            dc.DataType = typeof(System.Int32);
            sGrade.Columns.Add(dc);

            DataRow studInfoRow = sInfo.NewRow();
            studInfoRow["ID"] = "313882557";
            studInfoRow["FName"] = "Maxim";
            studInfoRow["LName"] = "Folko";
            sInfo.Rows.Add(studInfoRow);

            DataRow studGrade = sGrade.NewRow();
            studGrade["StudentID"] = "313882557";
            studGrade["Prof"] = "Math";
            studGrade["Grade"] = 70;
            sGrade.Rows.Add(studGrade);

            DataColumn[] pk = new DataColumn[1];
            pk[0] = sInfo.Columns["ID"];
            sInfo.PrimaryKey = pk;

            studentList.Relations.Add("StudGrade", studentList.Tables["Students"].Columns["ID"],
                studentList.Tables["Student Grade"].Columns["StudentID"]);
            //здесь выдает ошибку

            foreach (DataRelation rel in studentList.Relations)
            {
                Console.WriteLine("Relation Name : (0)", rel.RelationName.ToString());
                Console.WriteLine("Parent TaleName : (0)", rel.ParentTable.TableName.ToString());
                Console.WriteLine("Child TableName : (0)", rel.ChildTable.TableName.ToString());
            }
        }
    }
}



Exeption здесь не выкладиваю, так как Windows на иврите и Exeption тоже соответственно на иврите. Помогите пожалуйста...  в нете искал, вроде у меня все правильно написанно....  Заранее спасибо...

Автор: tol05 1.12.2009, 23:42
Цитата(maxfol @  1.12.2009,  22:17 Найти цитируемый пост)
В таблице "Оценки" нет ключа
эта информация ... к чему?

Цитата(maxfol @  1.12.2009,  22:17 Найти цитируемый пост)
Exeption здесь не выкладиваю, так как Windows на иврите и Exeption тоже соответственно на иврите. 


У меня эксепшен на русском... "В экземпляре не задана ссылка на объект".

DataSet studentList после создания не используется нигде вплоть до строки

Код

studentList.Relations.Add("StudGrade", studentList.Tables["Students"].Columns["ID"], studentList.Tables["Student Grade"].Columns["StudentID"]);


наверное нужно таблицы в него добавить? 

P.S.
Да, кстати:
Цитата

Console.WriteLine("Relation Name : {0}", rel.RelationName.ToString());


Автор: maxfol 2.12.2009, 00:30
проглядел строчку, и не те скобки поставил...  работает, спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)