PDA

View Full Version : [.Net 4.0/Entity Framework]Primi CRUD


RaouL_BennetH
14-10-2010, 13:19
Ciao a tutti :)

Ho già affrontato con soddisfazione le operazioni basilari per le operazioni di base verso tabelle.

Sono partito dai semplici metodi:



using(MyModel context = new MyModel())
{
contex.AddToSomeObject(mio_oggetto);
contex.SaveChanges();
}



e così via per i vari update e delete.

Ora stavo cercando di ampliare un pò il discorso:


public interface IFactory<T>

T SaveOrUpdate(ObjectContext context, T entity);

////bla

public class TestCRUD<T> : IFactory<T>

public T SaveOrUpdate(Object context, T entity)
{
//su msdn ho trovato un esempio che ho adattato al mio caso:
EntityKey key = default(EntityKey);
obj originalItem = null;
key = context.CreateEntityKey(typeOf(T).Name, entity);
if(context.TryGetObjectKey(key, out originalItem))
{
context.ApplyCurrentValues(typeOf(T).Name, entity);
}
else
{
context.AddObject(typeOf(T).Name, entity);
}
context.SaveChanges();
return entity;
}



//somewhere in da project.....

using(MyContext context = new MyContext())
{
TestCRUD<SomeObject> test = new TestCRUD<SomeObject>();
test.SaveOrUpdate(context, theDamnSomeObject);
}



Bene, mi succede questo:

se aggiungo un nuovo record, tutto fila liscio.

Quando invece ho recuperato un record già esistente, mi solleva questa eccezione:


ArgumentNullException:

Il valore non può essere null
Nome parametro: entity


//e la riga incriminata è questa:
key = context.CreateEntityKey(typeof(T).Name, entity);


Grazie mille :)

RaouL.