Jun*_*Dev 9 c# nhibernate fluent-nhibernate
我得到例外NHibernate.QueryException:无法解决财产问题:InsuredId.我是NHibernate的新手,我无法理解.
定义属性
public virtual int InsuredId { get; set; }
public virtual string Gender { get; set; }
public virtual DateTime DateOfBirth { get; set; }
public virtual string SrId { get; set; }
public virtual string SchoolId { get; set; }
public virtual string Ssn { get; set; }
public virtual DateTime GradDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
将数据映射到属性
public InsuredMap()
{
ReadOnly();
Table("Insured");
Id(x => x.Id, "InsuredId");
Map(x => x.Gender, "SexCd");
Map(x => x.DateOfBirth, "BirthDt");
Map(x => x.SrId, "SIDIdNum");
Map(x => x.SchoolId, "SchoolIdTxt");
Map(x => x.Ssn, "SocSecNumTxt");
Map(x => x.GradDate, "GradMthYrNum");
}
Run Code Online (Sandbox Code Playgroud)
获取所有值的函数
public Entities.Insured GetByInsuredId(int insuredId)
{
var query = Session.QueryOver<Entities.Insured>()
.Where(x => x.InsuredId == insuredId)
.Cacheable()
.CacheRegion(Constants.EntityCacheRegion);
return query.SingleOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
单元测试以测试数据
[Test]
public void InsuredMapTest()
{
var insured = repository.GetByInsuredId(714619800);
Assert.That(insured.Gender, Is.EqualTo("F"));
}
Run Code Online (Sandbox Code Playgroud)
Rad*_*ler 11
让我更准确一点,并扩展安德鲁惠特克的评论.
在您所说的映射中:
Id(x => x.Id, "InsuredId");
Run Code Online (Sandbox Code Playgroud)
哪个是信息:我的实体/班级Insured有
Id( // an identificator, the key
x => x.Id // represented by the property **Id** (here is the issue)
, "InsuredId") // its DB representation is the column "InsuredId"
Run Code Online (Sandbox Code Playgroud)
换句话说,C#属性
public virtual int InsuredId { get; set; }
Run Code Online (Sandbox Code Playgroud)
是不映射,在上述语句,所以它不能被用于查询
我们在查询中可以做些什么才能使它工作
var query = Session.QueryOver<Entities.Insured>()
//.Where(x => x.InsuredId == insuredId)
.Where(x => x.Id == insuredId)
...
Run Code Online (Sandbox Code Playgroud)
并且无法解析属性:InsuredId异常将消失,因为我们正在使用映射属性Id
| 归档时间: |
|
| 查看次数: |
8356 次 |
| 最近记录: |