我需要这样的东西:
context.EntitiesDbSet.Keys.Where(predicate);
此处的谓词类型为Expression<Func<Entity,bool>>
我现在知道的唯一解决方案是使用通过元数据分析生成的投影。
有没有更简单的方法?
答案 0 :(得分:1)
我知道的一种方法是通过反射,在实体上使用KeyAttribute并使用KeyAttribute在Entity上搜索属性。例如:
using System;
using System.ComponentModel.DataAnnotations;
namespace HelloWorld
{
public class MyEntity
{
[Key]
public int EntityID { get; set; }
public string Name { get; set; }
}
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Type myType = typeof(MyEntity);
var myProps = myType.GetProperties().ToList()
.Where(prop => prop.GetCustomAttributes(true).Any(a => a is KeyAttribute));
foreach (var element in myProps) {
Console.WriteLine(element.Name);
}
}
}
}
我相信这会有所帮助。