我有多个Entity Framework类,它们具有一些相同的属性,例如Order,用于设置显示顺序。
示例EF分部类:
[Table("Feature")]
public partial class Feature
{
public long ID { get; set; }
public long AppID { get; set; }
[Required]
[StringLength(15)]
public string DisplayMode { get; set; }
[Required]
public int Order { get; set; }
}
其他实体类也包含AppID属性。
在我的Repository类中是否可以使用泛型方法来获取由AppID过滤的Order的最高值?
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class
{
public int NewOrderNumber(long appID)
{
int result = 0;
var count = Context.Set<TEntity>().Count();
if (count != 0)
{
result = (from List in Context.Set<TEntity>()
where List.AppID == appID
orderby List.Order
select List.Order).ToList().LastOrDefault();
result++;
}
return result;
}
}
正如它的编码一样,TEntity没有AppID属性的概念。
答案 0 :(得分:5)
添加界面
public interface IAppOrdered
{
long AppID { get; }
public int Order { get; }
}
让你的类实现接口
public partial class Feature : IAppOrdered
{
}
然后将一个通用约束添加到存储库类
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class, IAppOrdered
{
}
您现在可以从存储库访问AppId
和Order
属性。