我正在将Entity Framework Code First的数据库优先实现用作项目的数据层,但遇到了问题。我需要能够将外键设置为null,以便从数据库中删除一个关联。我有两个对象,其中一个叫做Project。
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
)
我可以为一个项目分配一个员工,但是我想能够从项目中删除一个员工,并使员工字段为空。在我的用户界面中,这将显示为“未分配任何员工”。
然而,除了直接使用 SQL 查询外,在实体框架 4.1 中似乎找不到这样做的方法。
我尝试过:
public void RemoveEmployeeFromProject(int projectId)
{
var project = Context.Projects.FirstOrDefault(x => x.ProjectId == projectId);
project.Employee = null;
Context.SaveChanges();
}
但这并没有起到任何作用。
有人有什么想法吗?