我制作了以下函数来为外键引用赋值(我知道,它很脏,不适用于复合键):
void setFk(dynamic tbl,object id){
var path=db.DefaultContainerName+"."+tbl.TargetRoleName;
var ret=new System.Data.EntityKey(path, tbl.RelationshipSet.ElementType.RelationshipEndMembers[0].GetEntityType().KeyMembers[0].Name, id);
tbl.EntityKey=ret;
}
我想通过这个来调用:setFk(newRec.WorkItemsReference,src.WorkItemsId)
问题是它不适用于新创建的对象 newRec 因为 tbl.EntityKey 和 tbl.RelationshipSet 都是空的。
我看到的一种方法是获取 tbl.GetType() 并以某种方式从那里找到 Id 列。如果这是正确的路线,那么如何?
还有其他路线吗?
我的目标不是将更多参数传递给 setFk 函数,因为它应该有 2 个参数就足够了,并且会导致实体名称重复。