这对我来说是一个奇怪的。我有一个简单的域名,有两个实体公司和运营商。他们通过另一个表具有m:m关系。流利NHibernate HasManyToMany只适用于第一次加载
设置我流利的映射关系,从而
public partial class Carrier {
public virtual int ID { get; set; }
public virtual string Name { get; set; }
public virtual IList<Company> Companies { get; set; }
}
public class CarrierMap : ClassMap<Carrier> {
public CarrierMap() {
Id(x => x.ID);
Map(x => x.Name);
HasManyToMany(x => x.Companies)
.Table("CompanyCarrier");
}
}
public partial class Company {
public virtual int ID { get; set; }
public virtual string CompanyName { get; set; }
}
public class CompanyMap : ClassMap<Company> {
public CompanyMap() {
Id(x => x.ID);
Map(x => x.CompanyName);
}
}
而且我有一个简单的LINQ查询来获取运营商根据公司
public IQueryable<Carrier> GetCarriersByCompany(Company company) {
return from t in _session.Linq<Carrier>()
where t.Companies.Contains(company) select t;
}
,并调用它所有的MVC控制器 公司company = _session.AuthenticatedSellerCompany; IList carriers = _carrierRepository.GetCarriersByCompany(company) .ToList();
这是事情。它在第一次完美运行,之后每次都失败,直到我再次重新编译。所以我知道在某种程度上查询和映射的工作!
我得到的错误是:
Non-static method requires a target.
步进通过调试和更深的挖掘,我得到:
PropertyAccessException
Exception occurred getter of CCMvc.Core.Entities.Company.ID
而且,如果我扭转映射,把一个IList的运营商对公司实体,并试图通过开利公司获得经过筛选的公司名单,它每次都有效,但我不知道为什么。表或m:m表绑定它们没有什么特别之处。
帮助?
这仍然不能解释它为什么它第一次击中它的作品。 我想你的例子,但得到了一个错误: 无法解析特性:使用c:CCMvc.Core.Entities.Carrier 我还是有点用LINQ对于新手,所以我真的不知道如何解决这个问题。 – 2009-10-01 21:47:03