【发布时间】:2011-06-21 05:59:47
【问题描述】:
我正在使用 Entity Framework Code First 的数据库优先实现作为项目的数据层,但我遇到了问题。
我需要能够将外键设置为 null 才能删除数据库中的关联。
我有 2 个对象。一个叫做项目。
public class Project
{
public int ProjectId {get; set;}
public Employee Employee {get;set;}
}
public class Employee
{
public int EmployeeId {get; set;}
public string EmployeeName {get;set;}
}
这与我在数据库中的内容相符:
CREATE TABLE Project(
ProjectId int IDENTITY(1,1) NOT NULL,
EmployeeId int NULL
)
CREATE TABLE Project(
EmployeeId int IDENTITY(1,1) NOT NULL,
EmployeeName varchar(100) NULL
)
我可以将员工分配给项目。但是,我希望能够从项目中删除员工并将 Employee 字段为空。在我的 UI 中,这将显示为“未分配员工”。
但是,没有直接的 sql 查询,我似乎无法在实体框架 4.1 中找到执行此操作的方法。
我试过了:
public void RemoveEmployeeFromProject(int projectId)
{
var project = Context.Projects.FirstOrDefault(x => x.ProjectId == projectId);
project.Employee = null;
Context.SaveChanges();
}
但这没有任何作用。
有人有什么想法吗?
【问题讨论】: