繁体   English   中英

EF 实体的通用扩展

[英]Generic extension for EF entities

任务:为实体框架实体编写通用扩展

我不确定这是否可能,因为每个实体通常都有不同的属性,但我有一组共享一些共同属性的实体,我想知道是否甚至可以构建通用扩展而不是总是必须为每个实体写出相同的代码。

我花了一些时间研究这个,但没有太多,这让我相信这是不可能的。

无论如何,与我更好的判断相反,我要在 StackOverFlow 上问一个愚蠢的问题。

这就是我的想法,但显然是一个不可编译的例子,但至少你会明白这个想法。

public static List<TEntity> Generic<TEntity>(this DbContext db, string name)
{
    return db.TEntity.Where(s => s.Name == name);
}

我朝正确的方向戳将不胜感激。

为了清楚起见,我从来没有在教室里花一个小时进行编程,我是自学的,所以如果不可能,答案能否解释请从技术上解释为什么这在实体框架中是不可能的。 因为我自己找不到任何实质性的东西。

感谢@Bagus Tesa,我能够解决这个问题。

作为巴古斯TESA状态,使一个interface引用的共同属性Entities和REFFERENCE的interfaceEntities和提出延期的方式。

我使用的代码,

public static IQueryable<IFilterEntity> FilterEntity(this BaseViewModel vm,
 IQueryable<IFilterEntity> list)
{
    return list.Where(s => s.Name == vm.name && 
                           s.DateMonth == vm.Month &&
                           s.DateYear == vm.Year);
}

界面,

public interface IFilterEntity
{
    string Name { get; set; } 

    int? DateYear { get; set; }

    int? DateMonth { get; set; }
}

基本视图模型,

public class BaseViewModel
{      
    string Name => RootVm.Name;

    int? DateYear => RootVm.SelectedDate.Month;

    int? DateMonth => RootVm.SelectedDate.Month;
}

感谢所有的帮助。 我希望这对其他人有所帮助。

用这个

public IEnumerable<TEntity> Filter(Expression<Func<TEntity, bool>> filter, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null)
            {
db.Set<TEntity>().AsNoTracking().AsQueryable().Where(filter);}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM