Необработанное исключение типа "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);