Добавление строк в строго типизированный набор данных с отношением - PullRequest
1 голос
/ 10 июня 2011

Здравствуйте, набрали набор данных с именем DSMain.

Таблицы

Пользователь:
U_id int U_fname строка U_lname строка U_Case int

Корпус:
C_id int C_date string C_status int

U_Case связан с C_Status,

Я хочу добавить данные в эту таблицу.

публичная статическая пустота AddNewDluznik (строка fname, строка lname, int case) { MainData.User.AddUserRow (имя, имя, дело); }

Без отн. Работает.

Аргумент '3': невозможно преобразовать из 'int' в 'Zefir.DSMain.CaseRow'.

Ответы [ 2 ]

2 голосов
/ 10 июня 2011

Как вы это делаете, AddUserRow имеет следующую подпись:

AddUserRow(string fName, string lName, CaseRow case) //note case is of type CaseRow, not int.

Вам нужно сослаться на CaseRow в вашей таблице Case, на которую ссылается ваш пользователь:

public static void AddNewDluznik(string fName, string lName, int case)
{
    MainData.User.AddUserRow(fName, lName, MainData.Case.FindByC_id(case));
}

В качестве альтернативы, если вы работаете с изолированными таблицами, а не со всем DataSet, вы можете:

public static void AddNewDluznik(string fName, string lName, int case)
{
     var row = MainData.User.NewUserRow();
     row.U_fname = fName;
     row.U_lname = lName;
     row.U_Case = case; 
     MainData.User.AddUserRow(row);
}
1 голос
/ 10 июня 2011

Поскольку вы используете его, Case является сущностью, а не целым числом, поэтому вам нужно получить регистр, на который ссылается ваш пользователь, и добавить IT в качестве параметра в вызове AddUserRow.

Case myCase = <find the case in question>;
MainData.User.AddUserRow(fname, lname, myCase);
...