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.
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.