J'essaie d'écrire une sorte de référentiel pour ajouter, mettre à jour, supprimer etc. efficace mais je suis tellement confus comment puis-je disposer de mes 2 classes (ErpEntities et DataRepository) il y a plus de conseils mais aussi plus de conflits sur google. je veux faire disposer après valeur de retour. Shorthly et effectivelly :( Cordialement ...Comment écrire un référentiel avec Dispose() dans EF 3.5 -4.0?
namespace WinApp.EF
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSave_Click(object sender, EventArgs e)
{
using (ErpEntities erp = new ErpEntities())
{
erp.SaveCustomer(textBox1.Text, textBox2.Text);
}
}
}
public class ErpEntities : IDisposable
{
public int SaveCustomer(string Name, string SurName)
{
using (DataRepository<Customer> repository = new DataRepository<Customer>(new TestErpEntities()))
{
return repository.Add(new Customer() { Name = Name, SurName = SurName });
}
}
public void Dispose()
{
GC.SuppressFinalize(this);
}
}
public interface IRepository<T> : IDisposable where T : class
{
int Add(T entity);
}
public class DataRepository<T> : IRepository<T> where T : class
{
private TestErpEntities _context;
public DataRepository()
{
}
public DataRepository(TestErpEntities context)
{
_context = context;
}
public int Add(T entity)
{
_context.AddObject(typeof(T).Name, entity);
int saveValue = _context.SaveChanges();
return saveValue;
}
public void Dispose()
{
if (_context != null)
_context.Dispose();
}
}
}
Jetez un oeil à cet article. Cela pourrait aider: http://bit.ly/bF7jL3. – Steven
pourquoi rendre la vie difficile? utilisez un conteneur DI et laissez-le disposer du contexte pour vous. – RPM1984
Qu'est-ce qu'un conteneur DI? – Penguen