我已经使用以下函数为外键引用赋值(我知道,它很脏,对复合键不起作用):
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都是null。
我看到的一条路线是获取tbl.GetType()并以某种方式从那里找到Id列。如果这是正确的路线,那么如何?
还有其他路线吗?
我的目标不是将更多参数传递给setFk函数,因为它应该足以使用2个参数,并且会导致实体名称的重复。