नोट: मैं इकाई की रूपरेखा संस्करण 5सबसे अधिक कुशलता से बनाएँ, अद्यतन हैंडलिंग, साथ इकाई की रूपरेखा कोड पहले हटाएँ
उपयोग कर रहा हूँ मेरी सामान्य भंडार के अंदर, मैं नीचे के रूप में Add
, Edit
और Delete
तरीकों :
public class EntityRepository<T> : IEntityRepository<T>
where T : class, IEntity, new() {
readonly DbContext _entitiesContext;
public EntityRepository(DbContext entitiesContext) {
if (entitiesContext == null) {
throw new ArgumentNullException("entitiesContext");
}
_entitiesContext = entitiesContext;
}
//...
public virtual void Add(T entity) {
DbEntityEntry dbEntityEntry = _entitiesContext.Entry<T>(entity);
if (dbEntityEntry.State != EntityState.Detached) {
dbEntityEntry.State = EntityState.Added;
}
else {
_entitiesContext.Set<T>().Add(entity);
}
}
public virtual void Edit(T entity) {
DbEntityEntry dbEntityEntry = _entitiesContext.Entry<T>(entity);
if (dbEntityEntry.State == EntityState.Detached) {
_entitiesContext.Set<T>().Attach(entity);
}
dbEntityEntry.State = EntityState.Modified;
}
public virtual void Delete(T entity) {
DbEntityEntry dbEntityEntry = _entitiesContext.Entry<T>(entity);
if (dbEntityEntry.State != EntityState.Detached) {
dbEntityEntry.State = EntityState.Deleted;
}
else {
DbSet dbSet = _entitiesContext.Set<T>();
dbSet.Attach(entity);
dbSet.Remove(entity);
}
}
}
क्या आपको लगता है कि ये विधियां अच्छी तरह से लागू की गई हैं या नहीं? विशेष रूप से Add
विधि। क्या नीचे Add
विधि को लागू करना बेहतर होगा?
public virtual void Add(T entity) {
DbEntityEntry dbEntityEntry = _entitiesContext.Entry<T>(entity);
if (dbEntityEntry.State == EntityState.Detached) {
_entitiesContext.Set<T>().Attach(entity);
}
dbEntityEntry.State = EntityState.Added;
}
क्या यह कोड प्रथम का उपयोग कर रहा है? – PositiveGuy
@CoffeeAddict यह ईएफ 5.0.0 है। डीबी पहले या कोड पहले, इससे कोई फर्क नहीं पड़ता मुझे लगता है कि यह एक सामान्य भंडार कोड है। – tugberk
आप नई रिलीज लाइब्रेरी का उपयोग कर सकते हैं जो *** स्वचालित रूप से इकाई ग्राफ *** में सभी इकाइयों की स्थिति सेट करेगा। आप [उसी प्रश्न के मेरे उत्तर] को पढ़ सकते हैं (http://stackoverflow.com/questions/5557829/update-row-if-it-exists-else-insert-logic-with-entity-framework/39609020#39609020) । –