【发布时间】:2014-01-17 03:48:38
【问题描述】:
我正在尝试构建具有以下类/关系结构的修改后的角色系统:
项目 项目角色 员工
在哪里
ProjectEmployee 将三个实体映射在一起。
我有一个从 Project 到 ProjectEmployee 的一对多映射以及从 ProjectEmployee 到 Project 的引用映射。
我可以添加新的 ProjectEmployee 就好了(这意味着我的 Create 活动也很好),但我想将关系限制为每个员工只有一个条目。这会影响我的更新活动的逻辑。
在一起破解时,我试图清空 Project.ProjectEmployees(通过将值设置为新列表),然后添加具有适当角色的 ProjectEmployee 的新实例,等等。
在执行此操作时,我收到与将 Project.ProjectEmployees 设置为空列表相关的错误。
“无法将值 NULL 插入到列 'ProjectId'、表 'AppDB.dbo.ProjectEmployees' 中;列不允许空值。更新失败。 声明已终止。”
如果我删除列表中的新闻行,则会添加后续记录,但我会看到每个员工的记录太多。
这是我的项目 -> ProjectEmployees 映射:
mapping.HasMany<ProjectEmployee>(x => x.ProjectEmployees)
.Cascade.All()
.WithKeyColumn("ProjectId");
以及 ProjectEmployee -> Project 中的映射:
mapping.References(x => x.Project, "ProjectId");
应该很简单吧?
值得一提的是,我还在我的 Project 类中添加了一个名为 AddProjectEmployee 的方法,该方法搜索有问题的 Employee,如果他存在则删除他的 ProjectEmployee,然后添加新的 ProjectEmployee。当我调用它时,我得到了同样的错误。
任何帮助将不胜感激。
尼克
【问题讨论】:
标签: nhibernate fluent-nhibernate