【发布时间】:2012-11-13 03:07:40
【问题描述】:
这对我来说很奇怪。我有一个包含 2 个实体公司和运营商的简单域。它们通过另一个表具有 m:m 关系。
我这样设置我的 Fluent 映射
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 控制器中调用它 公司公司 = _session.AuthenticatedSellerCompany; IList 运营商 = _carrierRepository.GetCarriersByCompany(company) .ToList();
事情就是这样。它第一次完美工作,之后每次都失败,直到我再次重新编译。所以我在某种程度上知道查询和映射是有效的!
我得到的错误是:
Non-static method requires a target.
通过调试器并深入挖掘我得到:
PropertyAccessException
Exception occurred getter of CCMvc.Core.Entities.Company.ID
此外,如果我反转映射,将 IList Carriers 放在 Company 实体上,并尝试按 Carrier 获取过滤的公司列表,它每次都有效,但我不知道为什么。表或绑定它们的 m:m 表没有什么特别之处。
帮忙?!
【问题讨论】:
标签: c# asp.net-mvc nhibernate fluent-nhibernate