0

我有两个实体 - Project 和 ProjectType

项目有 -ID,TypeID,name ProjectType 有 -ID,name

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

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

4

2 回答 2

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;
于 2012-08-14T05:11:21.753 回答
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。

于 2012-08-14T05:20:45.450 回答