الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكله فى إنشاء ملف Dll يعمل مع MVC

بدأه red_scorpion1 في 15 مارس 2014 · 0 رد · 336 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم ورحمة الله وبركاته

 

اود مساعدتكم فى انشاء ملف Dll خاص ب Repositories & UnitOfWork داخل مشاريع MVC وبفضل الله تعالى نجحت فى عمل الجزء الأول من المشروع والخاص بـ Repositories 

 

كود EfGenericRepository.cs

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace Class6_HtmlHelpers.Models.Repositories
{
    public class EfGenericRepository<T> : IGenericRepository<T> where T : class
    {
        DbContext _db;
        IDbSet<T> entity;
        public EfGenericRepository(DbContext db)
        {
            this._db = db;
            entity = this._db.Set<T>();
        }
        public IEnumerable<T> List()
        {
            return entity;
        }

        public T Find(int id)
        {
            return entity.Find(id);
        }

        public void Add(T entityToAdd)
        {
            entity.Add(entityToAdd);
        }

        public void Edit(int id, T entitToUpdate)
        {
            entity.Attach(entitToUpdate);
            _db.Entry<T>(entitToUpdate).State = EntityState.Modified;
        }

        public void Delete(int id)
        {
            var selectedEntity = entity.Find(id);
            _db.Entry<T>(selectedEntity).State = EntityState.Deleted;
        }
    }
}

كود IGenericRepository.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Class6_HtmlHelpers.Models.Repositories
{
    public interface IGenericRepository<T> where T : class
    {
        IEnumerable<T> List();

        T Find(int id);

        void Add(T ToAdd);

        void Edit(int id, T ToUpdate);

        void Delete(int id);
    }
}

وهذا الجزء يعمل بلكفاءه والحمد لله واستطيع إستدعائه داخل اى مشروع دون اى مشكله ولكن مشكلتى هى فى اعداد UnitOfWork داخل ملف Dll لكى استطيع إستدعائه فى كل مشروع وتعبئته بالبيانات اللازمة حيثت تكمن المشكله لدى فى اننى لا عرف ماذا اكتب فى مشروع dll مكان إسم قاعدة البيانات او "Entity Freamwork" حتى يمكننى عند العمل بها فى اى مشروع كتابه إسم قاعدة البيانات الخاصة بالمشروع - كذلك مكان Model لا اعرف ماذا اكتب مكانه فى ملف Dll - طبعا ان تم عمل UnitOfWork فيمكننى تعبئتها بإسم قفاعده البيانات وال Model وتعمل بكل سهوله ولكنى اود عمل UnitOfWork  عامه تعمل معى فى جميع مشاريعى ؟

 

كود IUnitOfWork.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Class6_HtmlHelpers.Models.Repositories;
namespace Class6_HtmlHelpers.Models.UnitOfWork
{
    public interface IUnitOfWork
    {
        IGenericRepository<Post> Posts { get; }

        IGenericRepository<Tag> Tags { get; }

        void Save(); //Commit

    }
}

كود UnitOfWork.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Class6_HtmlHelpers.Models.Repositories;
namespace Class6_HtmlHelpers.Models.UnitOfWork
{
    public class UnitOfWork : IUnitOfWork, IDisposable
    {
        BlogDbContext _context;
        public UnitOfWork()
        {
            _context = new BlogDbContext();
        }
        private IGenericRepository<Post> _posts;
        public Repositories.IGenericRepository<Post> Posts
        {
            get
            {
                if (_posts == null)
                {
                    return new EfGenericRepository<Post>(_context);
                }
                return _posts;
            }
        }
        private IGenericRepository<Tag> _tags;
        public Repositories.IGenericRepository<Tag> Tags
        {
            get
            {
                if (_tags == null)
                {
                    return new EfGenericRepository<Tag>(_context);
                }
                return _tags;
            }
        }

        public void Save()
        {
            _context.SaveChanges();
        }

        public void Dispose()
        {
            _context.Dispose();
            GC.SuppressFinalize(this);
        }
    }
}

فهل يمكن عمل UnitOfWork عامه يمكن إستدعائها والعمل بها داخل اى مشروع ؟ ام لا بد ان تكون UnitOfWork  الخاصة بكل مشروع داخله فقط ؟؟

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…