我正在尝试将Fluent NHibernate与我的项目一起使用,目前我可以从数据库中获取数据,当我在应用程序服务器时,数据包含其PK但是当我将此数据(作为List)返回给客户端时它的PK很松散。
我该如何解决这个问题?
更新
我的POCO课程如下:PKs是CountryCd和CityCd
public class coCity
{
public virtual string CountryCd { get; private set; }
public virtual string CityCd { get; private set; }
public virtual string CityNameTH { get; set; }
public virtual string CityNameEN { get; set; }
public virtual int DeliveryLeadTime { get; set; }
public virtual string CreateBy { get; set; }
public virtual DateTime CreateDate { get; set; }
public virtual string UpdateBy { get; set; }
public virtual DateTime UpdateDate { get; set; }
public override bool Equals(object obj)
{
return this.GetHashCode().Equals(obj.GetHashCode());
}
public override int GetHashCode()
{
return (this.CountryCd + this.CityCd).GetHashCode();
}
}
映射类:
public class coCityMap : ClassMap<coCity>
{
public coCityMap()
{
Table("coCity"); // this is optional
CompositeId()
.KeyProperty(x => x.CountryCd)
.KeyProperty(x => x.CityCd);
Map(x => x.CityNameTH);
Map(x => x.CityNameEN);
Map(x => x.DeliveryLeadTime);
Map(x => x.CreateBy);
Map(x => x.CreateDate);
Map(x => x.UpdateBy);
Map(x => x.UpdateDate);
}
}
在应用程序服务器上获取数据的源代码
public List<coCity> GetTest()
{
List<coCity> result = new List<coCity>();
var sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession())
{
result = (List<coCity>)session.CreateCriteria(typeof(coCity)).List<coCity>();
}
return result;
}
当它仍在应用程序服务器数据时,如下图所示正确检索 alt text http://img138.imageshack.us/img138/1071/serverside.png
然而,当这些数据传回客户端时,它的所有PK都松散如下。 alt text http://img203.imageshack.us/img203/1664/clientside.png
答案 0 :(得分:2)
首先,这不是Fluent NHibernate的问题所以:
请注意,与此问题无关:您的Equals()实现非常糟糕,因为它没有考虑类型并且仅依赖于GetHashCode值。如果你的所有课程都有这个实现,你可能会遇到麻烦。
答案 1 :(得分:0)