EF Codefirst AddOrUpdate,使用相关实体作为标识符



我想使用AddorUpdate来设置使用相关实体的标识符表达式。

我的班级:

Class Task
property id as Integer
property name as String
End Class

我的关系类:

Class RelationTask
property id as Integer
property task as Task
property parentTask as Task
End Class

现在我想添加一个关系,如:

taskA = new Task with {.name = "A"}
taskB = new Task with {.name = "B"}
.... ' add tasks to context
context.RelationTasks.AddOrUpdate(function(r) r.task, new RelationTask with {.task = TaskB, .parentTask = TaskA})

这不起作用(错误">无法创建类型为"DataModel.Task"的常数值。此上下文中只支持基元类型或枚举类型。"(,因为我使用的是实体而不是值。。。我该怎么做?

此外,还有第二个问题:我该如何编写相同但具有多个标识符的内容?我觉得像function(r) {r.task, r.parentTask}

谢谢!

由于没有人回答,我试图自己找到一个解决方案,但我不敢相信这是最好的方法。无论如何,我添加了两个相关实体的ID,这样我就可以使用它们作为标识符:

Class Task
property id as Integer
property name as String
End Class
Class RelationTask
property id as Integer
property task as Task
property taskId as Integer
property parentTask as Task
property parentTaskId as Integer
End Class

taskA = new Task with {.name = "A"}
taskB = new Task with {.name = "B"}
.... ' add tasks to context
context.RelationTasks.AddOrUpdate(function(r) New With {r.taskId, r.parentTaskId}, new RelationTask with {.task = TaskB, .parentTask = TaskA})

它表现得像我想要的,但感觉不太好。。。

最新更新