Hej!
Vi arbetar med ett skolprojekt i programmering. Vi håller på att bygga ett system där vi arbetar mot en databas.
Vi har byggt upp vår databas utifrån model-first och har då vissa relationer där klasserna är beroende av varandra.
Trots att vi skrivit fungerande kod för när man ska spara ett objekt som har en koppling till ett annat objekt av en annan klass
så fungerar det inte nu när vi gjort det igen för en annan klass. Vi har vår kod uppdelad i tre lager; view(gränssnitt), business och datalayer. Businesslayer i vårt fall fungerar bara som ett "genomskick" och gör inte något speciellt egentligen. Det huvudsakliga
funktioner finns i view och datalayer. Vi arbetar med winform.
I viewlayer ser koden ut på följande sätt för det vi ska göra, vi skickar med det som skrivs in i attribut och väljs i datagridview + combobox för att spara i databasen. Först provade vi att skapa ett objekt och bara skicka objektet men det funkade inte så vi fick göra såhär istället:
private void button3_Click(object sender, EventArgs e)
{
// Datalager.PersonAnsökan pa = new Datalager.PersonAnsökan();
// {
double FörsäkPersonnummer = Convert.ToDouble(textBox5.Text.ToString());
string FörsäkradFörnamn = textBox2.Text.ToString();
string FörsäkradEfternamn = textBox4.Text.ToString();
string FörsäkBolag = textBox3.Text.ToString();
//}
int anställd = Convert.ToInt32(comboBox2.SelectedIndex);
int försäktag = Convert.ToInt16(dataGridView1.CurrentRow.Cells["PFörsäkringstarId"].Value);
bl.SkapaPersonAnsökan(FörsäkPersonnummer, FörsäkradFörnamn, FörsäkradEfternamn,FörsäkBolag, anställd, försäktag);
{
MessageBox.Show("Sparad");
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
}
}
I businesslayer:
public void SkapaPersonAnsökan(double FörsäkPersonnummer, string FörsäkradFörnamn, string FörsäkradEfternamn, string FörsäkBolag, int anställd, int försäktag)
{
dl.SkapaPersonAnsökan(FörsäkPersonnummer, FörsäkradFörnamn, FörsäkradEfternamn, FörsäkBolag, anställd, försäktag);
}
I datalayer:
public void SkapaPersonAnsökan(double FörsäkPersonnummer, string FörsäkradFörnamn, string FörsäkradEfternamn, string FörsäkBolag, int anställd, int försäktag)
{
using (var db = new Model1Container())
{
PersonAnsökan personansökan = new PersonAnsökan()
{
FörsäkradPersNr = FörsäkPersonnummer,
FörsäkradFnamn = FörsäkradFörnamn,
FörsäkradEnamn = FörsäkradEfternamn,
Försäkringsbolag = FörsäkBolag
};
var anst = from typ in db.AnställdSet
where typ.Anstnr == anställd
select typ;
var försäkringstagare = from item in db.PFörsäkringstagareSet
where item.PFörsäkringstarId == försäktag
select item;
foreach (var typ in anst)
{
Anställd a;
a = typ;
personansökan.Anställd = typ;
foreach (var item in försäkringstagare)
{
PFörsäkringstagare pf;
pf = item;
personansökan.PFörsäkringstagare = pf;
}
}
db.PersonAnsökanSet.Add(personansökan);
db.SaveChanges();
}
}
När vi försöker spara en personansökan får vi fel på db.SaveChanges som felar på pförsäkringstagare. Hittar inte varför. Har problem med mappning i min dator så kan inte testköra och kopiera in det exakta felmeddelandet, men felet hamnar på pförsäkringstagare. Förstår inte hur det kan bli så, är det någon som ser något direkt i vår kod?
Har som sagt använt "samma" kod tidigare och har funkat då.