Я пытаюсь передать массив значений в массив объекта таблицы, чтобы я мог записать их в базу данных.
Моя база данных выглядит так ->
tblCaseNotes
CaseNoteID | PersonId | и т. д.
tblCaseNotesContactType
rowguid | CaseNoteID | ContactTypeID
tblMaintItems
itemID | CategoryID
ItemID из таблицы Maint - это то, что записывается в tblCaseNotesContactType вместе с текущим CaseNoteID. Может быть несколько ContactTypes для CaseNote.
На данный момент у меня есть массив значений для CheckTistBox ContactType, созданный в моем событии btnNew_Click:
// Contact Type check list box
int cTypeCount = chkContactType.CheckedItems.Count;
int [] contactTypes = new int[cTypeCount];
// reusable generic counter for looping thru the check lists
int cMaintCounter = 0;
foreach (int checkedItem in chkContactType.CheckedIndices)
{
contactTypes[cMaintCounter] = (int)chkContactType.GetItemValue(checkedItem);
cMaintCounter++;
}
CurrentCaseNote.AddCNote(Program._CurrentPerson.PersonID, Convert.ToDecimal(tbxTimeSpentUnits.Text), chkIsCaseLog.Checked, Convert.ToDateTime(datContactDate.Text), memContactDetails.Text, contactTypes);
Который затем я передаю своему методу AddCNote объекта CurrentCaseNote.
public static void AddCNote(int personID, decimal tsUnits, bool isCaseLog, DateTime cDate, string cDetails, int[] cTypes)
{
var caseNoteToAdd = new tblCaseNote
{
CaseNoteID = Guid.NewGuid(),
PersonID = personID,
TimeSpentUnits =tsUnits,
IsCaseLog =isCaseLog,
ContactDate =cDate,
ContactDetails =cDetails,
InsertDate = DateTime.Now,
InsertUser = Environment.UserName
};
tblCaseNotesContactType[] cTypeToAdd = new tblCaseNotesContactType[cTypes.Length];
cTypeToAdd[0].CaseNoteID = caseNoteToAdd.CaseNoteID;
cTypeToAdd[0].ContactTypeID =cTypes[0];
cTypeToAdd[0].rowguid = Guid.NewGuid();
CaseNoteDAL.addCNote(caseNoteToAdd,cTypeToAdd);
Затем он передается в DAL для записи в локальную базу данных:
public static void addCNote(tblCaseNote caseNote, tblCaseNotesContactType[] cType)
{
foreach (var type in cType)
{
caseNote.tblCaseNotesContactTypes.Add(type);
}
dcCaseNotes.tblCaseNotes.InsertOnSubmit(caseNote);
//dcCaseNotes.tblCaseNotes.InsertOnSubmit(caseNoteToAdd);
dcCaseNotes.SubmitChanges();
}
Это дает мне NUllReferenceException была необработанная ошибка в этой строке -> cTypeToAdd[0].CaseNoteID = caseNoteToAdd.CaseNoteID;
Это потому, что я работаю только с [0]? Я просто сделал это, чтобы упростить мое тестирование. Когда я шагаю по коду, мой массив значений корректен и есть Guid для caseNoteToAdd.CasNoteID
Может кто-нибудь дать мне несколько советов о том, где я иду не так и что может быть причиной ошибки? Как вы можете понять из моего кода, я новичок в этом и учусь на лету.
Спасибо
~ P