我的当前项目基于实体框架代码优先。我有三种类型:任务,任务类型和模块。实体框架创建外键对象而不是使用已有的外键对象
public class Task
{
public int ID { get; set; }
public Module Module { get; set; }
public TaskType Type { get; set; }
}
public class TaskType
{
public int ID { get; set; }
public string Name { get; set; }
}
public class Module
{
public int ID { get; set; }
public string Name { get; set; }
}
表中为任务类型定义了外键关系。
我的问题是,当我尝试创建一个新的Task-object链接到已经可用的TaskType和Module对象(ID = 1)时,这些对象在其相应的表中创建为新行。
TaskRepository repo = new TaskRepository();
Task task = new Task();
task.Module = Modules.SingleOrDefault(m => m.ID == 1);
task.Type = TaskTypes.SingleOrDefault(t => t.ID == 1);
Tasks.Add(task);
这会在我的任务类型表,在我的模块表新行以及而不只是使用已有的任务类型-ID和模块ID的。
我希望我清楚我的问题是什么;-)
在此先感谢您的帮助。我很感激。
问候, 凯文
您是否使用相同的上下文实例来加载'Module'和'TaskType'并保存'Task'? – 2011-06-06 09:43:44
不,我使用另一个类中的helper方法接收Module和TaskType,该方法再次保存了我的DbContext实例。 – bitfrickler 2011-06-06 10:22:31