0

我制作了以下函数来为外键引用赋值(我知道,它很脏,不适用于复合键):

        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 个参数就足够了,并且会导致实体名称重复。

4

0 回答 0