是否有任何与复合键“查找”的等效方法

时间:2016-02-09 17:05:37

标签: c# entity-framework linq interface entity-framework-6

我想知道是否有任何与复合键Find等效的方法。

例如:

 public CITY Find(int id)
  { 
    return context.CITies.Find(id);
  }

这是完美的解决方案吗?

 public CITY Find(int comId1, int comId2)
        {
            return context.CITies.Where(c => c.CITY_ID == comId1 && c.COUNTRY_ID == comId2).SingleOrDefault();
        }

我尝试在我的界面中实现以下方法:

T Find(int id);
T Find(int comId1,int comId2);

1 个答案:

答案 0 :(得分:2)

Find方法支持倍数参数,唯一需要确保以正确的顺序传递密钥:

modelBuilder.Entity<Cities>().HasKey(t => new { t.Id1, t.Id2 }); 

当您有复合键时,Entity Framework要求您定义键属性的顺序。您可以使用Column注释指定订单。您也可以使用Fluent Api配置您的密钥,如下所示:

Find

如果您想要一个适用于所有实体类型的public T Find<T>(params object[] keyValues) where T: class { return context.Set<T>().Find(keyValues); } 泛型方法,您可以这样做:

PROFILE MATCH (:User {uid:{0}})<-[:manages]-(employee)
RETURN employee