在已删除的列上找不到流畅的 nhibernate 列
fluent nhibernate column not found on a deleted column
我们删除了一个主键并将其转换为组合键。 属性 已从模型和 Fluent 映射中删除。该字段已从数据库中删除。现在,当我们在提交时触发 QueryOver,它会触发更新并且更新会抛出 SQL Error: Invalid Column Name: 'SubmissionID'
上一个
public class Submission{
public virtual int SubmissionID{get;set;}
public virtual int CandidateID{get;set;}
public virtual int JobID{get;set;}
}
public class SubmissionMap:...{
public SubmissionMap(){
Id(x=>x.SubmissionID
}
}
改为
public class Submission{
public virtual Candidate Candidate{get;set;}
public virtual Job Job{get;set;}
}
public class SubmissionMap:...{
public SubmissionMap(){
CompositeId()
.KeyReference(x=>x.Job)
.KeyReference(x=>.Candidate);
}
}
此更改后,提交的任何 update/insert 都会触发 SQL Error: Invalid SubmissionID column
。我们记录了所有 NHibernate SQL 查询,其中 none 似乎有 SubmissionID 列。
作为临时修复,我们重新创建了 SubmissionID 列,错误消失了。我们确实有 Redis 二级缓存。
那么,您还需要 Submission
实体吗?它现在看起来是 Candidate 和 Job 之间的纯 many-to-many 关系。
然后可以在没有中间实体的情况下对其进行映射。 (也请参阅 this page 上的最后一个示例。)
如果你在 Submission
上有额外的属性,放弃它的代理键来换取一个组合键是很奇怪的。这通常会使使用 ORM 变得更加困难。例如,您现在应该实施 Submission
的 id as a component. (See this blog for more explanation on why this, or read the whole composite-id
reference。)
现在谈谈您的实际问题和麻烦:抱歉,根据您问题中提供的事实,我不知道这怎么可能。你在数据库中有一些旧的触发器在乱搞吗?
我们删除了一个主键并将其转换为组合键。 属性 已从模型和 Fluent 映射中删除。该字段已从数据库中删除。现在,当我们在提交时触发 QueryOver,它会触发更新并且更新会抛出 SQL Error: Invalid Column Name: 'SubmissionID'
上一个
public class Submission{
public virtual int SubmissionID{get;set;}
public virtual int CandidateID{get;set;}
public virtual int JobID{get;set;}
}
public class SubmissionMap:...{
public SubmissionMap(){
Id(x=>x.SubmissionID
}
}
改为
public class Submission{
public virtual Candidate Candidate{get;set;}
public virtual Job Job{get;set;}
}
public class SubmissionMap:...{
public SubmissionMap(){
CompositeId()
.KeyReference(x=>x.Job)
.KeyReference(x=>.Candidate);
}
}
此更改后,提交的任何 update/insert 都会触发 SQL Error: Invalid SubmissionID column
。我们记录了所有 NHibernate SQL 查询,其中 none 似乎有 SubmissionID 列。
作为临时修复,我们重新创建了 SubmissionID 列,错误消失了。我们确实有 Redis 二级缓存。
那么,您还需要 Submission
实体吗?它现在看起来是 Candidate 和 Job 之间的纯 many-to-many 关系。
然后可以在没有中间实体的情况下对其进行映射。 (也请参阅 this page 上的最后一个示例。)
如果你在 Submission
上有额外的属性,放弃它的代理键来换取一个组合键是很奇怪的。这通常会使使用 ORM 变得更加困难。例如,您现在应该实施 Submission
的 id as a component. (See this blog for more explanation on why this, or read the whole composite-id
reference。)
现在谈谈您的实际问题和麻烦:抱歉,根据您问题中提供的事实,我不知道这怎么可能。你在数据库中有一些旧的触发器在乱搞吗?