【发布时间】:2018-07-29 13:33:01
【问题描述】:
我的很多数据模型都使用这个接口:
public interface IHasPrimaryImageProperty
{
PrimaryImageDataModel PrimaryImage { get; set; }
int? PrimaryImageId { get; set; }
}
PrimaryImageDataModel 是:
public class PrimaryImageDataModel
{
public int Id { get; set; }
public string ImageFile { get; set; }
public int TotalItemsUsingImage { get; set; }
}
我想通过对实现IHasPrimaryImageProperty 的所有数据模型执行计数来填充PrimaryImageDataModel.TotalItemsUsingImage。
到目前为止,我已经设法获得了实现IHasPrimaryImageProperty 的类型列表。
但我无法获得每种类型的总数。
请参阅下面的示例,了解我想要实现的目标。
public static PrimaryImageDataModel GetImageUsageTotals(PrimaryImageDataModel image)
{
var typesUsingImage = GetTypesWithPrimaryImageProperty();
int totalUsingImage = 0;
foreach (Type typeUsingImage in typesUsingImage)
{
// I WOULD LIKE TO DO SOMETHING LIKE THIS
totalForType = db.Set<typeUsingImage>()
.Where(x => x.PrimaryImageId == image.Id)
.Count()
totalUsingImage += totalForType;
}
image.TotalItemsUsingImage = totalUsingImage;
return image;
}
public static IEnumerable<Type> GetTypesWithPrimaryImageProperty()
{
var currentAssembly = Assembly.GetExecutingAssembly();
foreach (Type type in currentAssembly.GetTypes())
{
if (type.GetInterfaces().Contains(typeof(IHasPrimaryImageProperty)))
{
yield return type;
}
}
}
【问题讨论】:
-
EF6 还是 EF Core?
-
我不常这么说,但在这种情况下,我真的会转向数据库视图。
-
@IvanStoev 对不起,我妈突然来了,不得不暂时弃船!它是 EF6,但我看到你的答案涵盖了两者。谢谢。
标签: entity-framework reflection interface dbset