2

私はこのようなものが必要です:

context.EntitiesDbSet.Keys.Where(predicate);

And predicate here is of typeExpression<Func<Entity,bool>> 現時点でわかっている唯一の解決策は、メタデータ分析によって生成されたプロジェクションを使用することです。もっと簡単な方法はありますか?

4

1 に答える 1

1

私が知っている 1 つの方法は、リフレクションによるものです。エンティティで KeyAttribute を使用し、エンティティで KeyAttribute のプロパティを検索します。例:

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);
            }
        }
    }
}

それが役立つと思います。

于 2013-08-06T00:52:52.093 に答える