我有2个集合映射,一个是工作,另一个不是。我无法弄清楚原因。
public class ProjectMappings : ClassMap<Project>
{
public ProjectMappings()
{
HasMany(x => x.Commits).Table("tCommits").Cascade.All().KeyColumn("fRC_Commit_ID").ForeignKeyConstraintName("fRC_Project_ID");
HasMany(x => x.Competencies).Table("tCompetencies").Cascade.All().KeyColumn("fIC_ID").ForeignKeyConstraintName("fIC_Project_ID");
}
}
public class CommitsMappings : ClassMap<Commit>
{
public CommitsMappings()
{
Table("tCommits");
Id(x => x.Id, "fRC_Commit_ID");
Map(x => x.ProjectID, "fRC_Project_ID").Not.Nullable();
}
}
public class CompsMappings : ClassMap<Competency>
{
public CompsMappings()
{
Table("tCompetencies");
Id(x => x.ProjectCompetencyID, "fIC_ID");
Map(x => ProjectID", fIC_Project_ID").Not.Nullable();
}
}
如果我运行代码: Project.Competencies.Clear(); - 所有能力都从项目中清除 如果我为项目添加一个新的comp,我可以简单地添加:Project.Competencies.Add(item);
然而,我对Commits的映射似乎是出于某种原因,
消息:无法更新标识列'fRC_Commit_ID'。
这是什么意思?为什么会这样?
我正在尝试删除一些能力,添加一些新的能力,并创建一个新的提交来显示项目的变化。在Transaction.Commit()上我得到了上面的错误。
答案 0 :(得分:1)
代码
HasMany(x => x.Commits)
.Cascade.All()
.KeyColumn("fRC_Project_ID")
.Inverse();
// change Map(x => x.ProjectID, "fRC_Project_ID").Not.Nullable(); to
References(x => x.Project, "fRC_Project_ID").Not.Nullable(); // where Project property is of type Project