外部キー参照に値を代入する次の関数を作成しました (これはダーティで、複合キーでは機能しません)。
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)
問題は、tbl.EntityKey と tbl.RelationshipSet が両方とも null であるため、新しく作成されたオブジェクト newRec では機能しないことです。
私が見る 1 つのルートは、tbl.GetType() を取得し、そこから何らかの方法で Id 列を見つけることです。これが正しいルートである場合、どのように?
他のルートは?
私の目標は、 setFk 関数にそれ以上の引数を渡さないことでした。これは、2 つの引数で十分であり、エンティティ名の重複につながるためです。