use*_*169 4 c# generics asp.net-mvc entity-framework
我有多个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; }
}
Run Code Online (Sandbox Code Playgroud)
其他实体类还包含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;
}
}
Run Code Online (Sandbox Code Playgroud)
在编码时,TEntity没有AppID属性的概念.
添加界面
public interface IAppOrdered
{
long AppID { get; }
public int Order { get; }
}
Run Code Online (Sandbox Code Playgroud)
让你的类实现接口
public partial class Feature : IAppOrdered
{
}
Run Code Online (Sandbox Code Playgroud)
然后将一个通用约束添加到存储库类
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class, IAppOrdered
{
}
Run Code Online (Sandbox Code Playgroud)
您现在可以从您的存储库访问AppId和Order属性.
| 归档时间: |
|
| 查看次数: |
383 次 |
| 最近记录: |