J'essaie de transmettre un tableau de valeurs dans un tableau d'un objet table afin de pouvoir les écrire dans la base de données.Problème lors de la transmission d'un tableau de valeur dans un tableau d'objets
Ma base de données ressemble à ceci ->
tblCaseNotes
CaseNoteID | PersonId | etc, etc
tblCaseNotesContactType
rowguid | CaseNoteID | ContactTypeID
tblMaintItems
Itemid | CategoryID
L'itemID de la table Maint est ce qui est écrit dans le tblCaseNotesContactType avec le CaseNoteID actuel. Il peut y avoir plusieurs ContactTypes par CaseNote.
Ce que j'ai à ce jour est un tableau des valeurs du CheckListBox ContactType créé dans mon btnNew_Click événement:
// 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);
que je passe alors à mon objet CurrentCaseNote méthode AddCNote.
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);
Il est ensuite passé à la DAL à écrire dans la base de données locale:
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();
}
Il me donne un NullReferenceException était une erreur non gérée sur cette ligne ->cTypeToAdd[0].CaseNoteID = caseNoteToAdd.CaseNoteID;
Est-ce parce que je ne travaille qu'avec le [0]? Je l'ai juste fait pour simplifier mes tests. Est-ce que quelqu'un peut me donner quelques indications sur où je vais mal ici et ce qui pourrait être à l'origine de l'erreur? Comme vous pouvez le voir à partir de mon code, je suis nouveau à ce sujet et j'apprends à la volée.
Merci,
~ P
Wow, même un amateur comme moi aurait vu ça! Merci! –