Linq to SQL
Hej,Jeg står med et kæmpe problem lige pt. da jeg ikke kan få linq til at query databasen hvergang jeg laver .Count()
Nedenstående kode er den jeg bruger.
public void start()
{
DB.Log = Console.Out;
int installationnumber = 1;
//Virker
var OLDinst = (from Oline in DB.Installations where Oline.installation_number == installationnumber select Oline).First();
int OLDantal = OLDinst.Ports.Count();
Table<Port> Ports = DB.GetTable<Port>();
Port port = new Port();
port.blades_id = 7;
port.portnumber = 1;
port.installations_id = OLDinst.id;
port.state = 1;
Ports.InsertOnSubmit(port);
DB.SubmitChanges(ConflictMode.FailOnFirstConflict);
//Virker ikke
Installation NEWinst = (from line in DB.Installations where line.installation_number == installationnumber select line).First();
int NEWantal = NEWinst.Ports.Count();
//Virker
int InstPort = (from line in DB.Ports where line.Installation == NEWinst select line).Count();
Console.WriteLine("Old: " + OLDantal);
Console.WriteLine("New: " + NEWantal);
Console.WriteLine("Real Port Count: " + InstPort);
}
Min database består af 3 Tabels: Installation,Ports,Blades som er linket på følgende måde via foreign key:
Installation -> Ports <- Blades
For at give lidt forklaring har jeg en installation som jeg vil tildele en port til. Hvilket også funger perfekt. Men når jeg så vil lave mit check i koden for at være sikker på det virker, ved at lave: "int NEWantal = NEWinst.Ports.Count();" sender den ikke nogen query mod tablen Ports i databasen, den tager bare det den kan huske fra tidligere, hvilket jo er forkert for jeg har lige lavet "SubmitChanges".
Hvis jeg så laver "int InstPort = (from line in DB.Ports where line.Installation == NEWinst select line).Count();" Så får jeg det rigtige antal.
Output bliver:
Old: 0
New: 0
Real Port Count: 1