【发布时间】:2015-10-30 13:06:07
【问题描述】:
我有一个findById() 方法的通用版本(KeyType 和EntityType 是类级别的模板参数):
public EntityType findById(KeyType key)
{
log.LogDebugStart();
log.LogDebug("id=" + key);
EntityType data;
using (ObjectContextWrapper contextWrapper = TransactionHelper.GetContextWrapper())
{
Entities bdd = contextWrapper.GetContext();
DbSet<EntityType> set = bdd.Set<EntityType>();
data = set.Find(key);
}
log.LogDebugEnd();
return data;
}
它适用于单列键(例如:KeyType = long),但我无法让它与复合主键(例如:KeyType : long[])一起使用。
我得到的异常:
传递的主键值的数量必须与主键的数量相匹配 实体上定义的键值。参数名称:keyValues
实体是在.edmx 文件的帮助下从数据库生成的。在我的例子中,两列都设置为主键。在调试器中,我清楚地看到 key 是 short[2] 类型。
我认为这可能与以下事实有关只要我将一个数组传递给我的findById() 方法...
【问题讨论】:
标签: c# entity-framework