链接EF中的相关实体

时间:2012-08-13 15:11:36

标签: linq entity-framework linq-to-entities

我有两个实体--Project和ProjectType

项目有-ID,TypeID,名称 ProjectType具有 - ID,名称

TypeId是Project和ProjectType表之间的外键

现在说我做了类似下面的事后我手头有一个物体

var selprojtype = db.ProjectTypes.Single(p => p.Name == id);

然后我说我正在创建一个新项目,我想链接到项目类型

Project project = new Project();

如果我这样做

project.ProjectType = selprojtype;

未设置TypeId。所以我总是在调用SaveChanges方法之前专门设置如下的外键。

project.TypeId= selprojecttype.ID

有没有更好的方法来链接相关实体?

2 个答案:

答案 0 :(得分:0)

在建立对象之间的关系之前,两个对象必须位于同一个数据上下文中。所以你的代码应该是:

var selprojtype = db.ProjectTypes.Single(p => p.Name == id);
Project project = new Project();

//now add newly created project object to the context
db.Projects.Attach(project);

//now establish the relation
 project.ProjectType=selprojtype;

答案 1 :(得分:0)

你可以做的是:

public int? TypeId { get; set; }
private ProjectType projectType;
public ProjectType ProjectType{
    get { return projectType;}
    set {
          projectType = value;
          TypeId = value != null ? value.Id : null;
        }
}

这样,您可以在分配关系时直接控制FK。