Необработанное исключение типа "System.ArgumentOutOfRangeException" произошло в mscorlib.dll - C#
Формулировка задачи:
обработчик формы
workerdao
worker
и это уже второй уровень , три класса всего отдел-работник-задачи.. Так вот работников нормально добавляет, а на задачах вылетает. Хотя пишу тоже самое вроде.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using NHibernate; using lab4.dao; using lab4.domain; using lab4.mapping; namespace lab4 { public partial class Form5 : Form { private ISession session; private Form1 perent; private string key1; private string key2; private string key3; public void setSession(ISession session) { this.session = session; } public void setPerent(Form1 perent) { this.perent = perent; } public void setKey1(string key1) { this.key1 = key1; } public void setKey2(string key2) { this.key2 = key2; } public void setKey3(string key3) { this.key3 = key3; } public void setTextBox1Text(string text) { this.textBox1.Text = text; } public void setTextBox2Text(string text) { this.textBox2.Text = text; } public void setTextBox3Text(string text) { this.textBox3.Text = text; } public void setButton1Visible(bool visible) { this.button1.Visible = visible; } public void setButton2Visible(bool visible) { this.button2.Visible = visible; } public Form5() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DAOFactory dao1 = new NHibernateDAOFactory(session); IWorkerDAO workerDAO = dao1.getWorkerDAO(); Worker worker = workerDAO.getWorkerByworkerName(key1); Zadachi zadachi = new Zadachi(); zadachi.zadachi_name = textBox1.Text; zadachi.zadachi_prioritet = textBox2.Text; zadachi.zadachi_deadline = textBox3.Text; worker.ZadachiList.Add(zadachi); zadachi.worker = worker; workerDAO.SaveOrUpdate(worker); perent.fillDataGridView3(key1); this.Visible = false; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using NHibernate; using NHibernate.Criterion; using lab4.domain; namespace lab4.dao { public class WorkerDao : GenericDAO<Worker>, IWorkerDAO { public WorkerDao(ISession session) : base(session) { } public Worker getWorkerByworkerName(string workerName) { Worker worker = new Worker(); worker.workerName = workerName; ICriteria criteria = session.CreateCriteria(typeof(Worker)).Add(Example.Create(worker)); IList<Worker> list = criteria.List<Worker>(); worker = list[0]; return worker; } public IList<Zadachi> getAllZadachiofWorker(string workerName) { var list = session.CreateSQLQuery( "SELECT Zadachi.* FROM Zadachi JOIN Worker" + " ON Zadachi.workerid = Worker.Id" + " WHERE Worker.workerName='" + workerName + "'") .AddEntity("Zadachi", typeof(Zadachi)) .List<Zadachi>(); return list; } public Worker getWorkerByOtdelworkerNameAndLastName( string otdelName, string workerName, string lastName) { var list = session.CreateSQLQuery( "SELECT Worker.* FROM Worker JOIN Otdel" + " ON Worker.OtdelId = Otdel.Id" + " WHERE Otdel.OtdelName='" + otdelName + "'" + " and Worker.workerName='" + workerName + "'" + " and Worker.LastName='" + lastName + "'") .AddEntity("Worker", typeof(Worker)) .List<Worker>(); Worker worker = list[0]; return worker; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace lab4.domain { //Сущность работника public class Worker:EntityBase { private IList<Zadachi> zadachiList = new List<Zadachi>(); public virtual string workerName { get; set; } public virtual string LastName { get; set; } public virtual char Sex { get; set; } public virtual int Year { get; set; } public virtual Otdel Otdel { get; set; } public virtual IList<Zadachi> ZadachiList { get { return zadachiList; } set { zadachiList = value; } } } }
вылетает в строке worker = list[0];
а перед етим в лист не считывает походу етого работника, count = 0 там
это в обработчике, 1я проц
Решение задачи: «Необработанное исключение типа "System.ArgumentOutOfRangeException" произошло в mscorlib.dll»
textual
Листинг программы
list.Add(worker);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д