我有两个实体--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
有没有更好的方法来链接相关实体?
答案 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。