• 1397/08/04

ارث بری از MyGenericRepository :

سلام من اگه بخوام در یک   Repository ازMyGenericRepository ارث بری کنم به چه صورت ؟

بعد چگونه از اون باید استفاده کرد 

مثال همون یخجال که زدید من مخوام فقط دو ستون از یک جدول بارگذاری کنم حلا چوری باید ویومدلم پرکنم وقتی از MyGenericRepository استفاده میکنم

خوباید  Repository اختصاصی برای اون بسازم درت؟

  • 1397/08/04
  • ساعت 11:22

سلام

برای جداولی که نیاز خاص دارند یک Repositpry جدا ایجاد میکنیم و حتی میتونید در همون ریپوزیتوری از Generic نیز استفاده کنید


  • 1397/08/04
  • ساعت 12:01

Repositpry جدا چطور از Generic  ارث بری کن که 

public class RepositoryUsers:MyGenericRepository
{
    
}

public class MyGenericRepository<TEntity> where TEntity : class
{
    private MyContext _context;
    private DbSet<TEntity> _dbset;

    public MyGenericRepository(MyContext context)
    {
        _context = context;
        _dbset = context.Set<TEntity>();
    }

    public virtual IEnumerable<TEntity> Get(Expression<Func<TEntity, bool>> where = null,Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderby = null, string includes = "")
    {
        try
        {
        IQueryable<TEntity> query = _dbset;

        if (where != null)
        {
            query = query.Where(where);
        }

        if (orderby != null)
        {
            query = orderby(query);
        }

        if (includes != "")
        {
            foreach (string include in includes.Split(','))
            {
                query = query.Include(include);
            }

            }
        return query.AsNoTracking().ToList();
         }
        catch (Exception ex)
        {

            MessageBox.Show(ex.ToString());
            return null;

        }
    }
{

 


  • 1397/08/04
  • ساعت 12:37

میتونید کلاس generic را abstrac کنید تا راحت ارث بری و  متد هاش رو ovvride کنید


  • 1397/08/04
  • ساعت 12:38

البته متدهاتون virtual است پس میتونید اونها رو نیز overide کنید


  • 1397/08/04
  • ساعت 12:54

ممنون ولی وقتی ارث بری مکنم این خطا میده نمیفهم کجای کارم اشتباه 


  • 1397/08/04
  • ساعت 13:18

باید نوعش رو مشخص کنید داخل <>


logo-samandehi