Hittade felet..
Hej
Sorry för den taskiga rubriken men kom inte på något annat.
Jag har fått ett litet problem med lite objekt. Jag har ett object som i detta fallet är ett objekt av typen country. När jag skapar ett sådant så har propertiet name värdet England, bara för att testa.
Jag sätter idnummert på det rätta objektet, i detta fallet idnummer 23. Sen när man försöker komma åt name egenskapen så skall objektet laddas från databasen, eftersom jag inte laddat det. Detta sker genom load metoden Load(). Här har name värdet england, innan jag skickar in det till Load(BO.BoBase). Eftersom jag redan laddat detta objektet från databasen så kommer det att finnas i datacachen som jag kommer åt mha find. I denna så anger jag att det aktuella objektet skall vara samma som det laddade. (obj = (BO.BoBase)this._dataCache[obj.Id]; ). Om jag läser av värdet i obj så har det värdet, sweden, precis som det skall ha. När jag sen trillar ut ur Find metoden så är värdet fel igen, dvs det är england igen. Bara för att testa så har jag satt dit denna raden, obj = (BO.BoBase)manager.DataCache[obj.Id];
Men när jag trillar ut ur Load(BO.BoBase obj) så är ändå värdet på egenskapen = england och således så blir detta resultatet när load avslutas att objektet har fel värde.
Någon som ser något fel?
public void Load()
{
if ((this._state == LoadState.NotLoaded) && (this._id != 0))
{
this._state = LoadState.Loading;
DataManager.Instance.Load(this);
this._state = LoadState.Loaded;
}
}
public void Load(BO.BoBase obj)
{
//hämta anslutingen och öppna den samt starta en transaction!
IDataManager manager = _managers[obj.GetType()];
if (manager.Find(obj) == false)
{
//Code to load the object from the database.
}
else
{
obj = (BO.BoBase)manager.DataCache[obj.Id];
}
}
public bool Find(BO.BoBase obj)
{
if (this._dataCache[obj.Id] != null)
{
obj = (BO.BoBase)this._dataCache[obj.Id];
return true;
}
else
{
return false;
}
}