&引用;“重复”;使用NHibernate、Linq to NHibernate和Castle.Windsor时,数据填充到Silverlight 4 Gridview中
我目前面临的问题如下: 我的Silverlight 4应用程序中有一个Gridview,其中填充了数据。但是,数据是从数据库带回的对象集合中的第一个条目,并在网格视图中重复x次 当我在DAL和域服务上设置断点时,返回的数据是正确的,即它返回集合中所有不同的对象 如果我将数据绑定到非Silverlight组件,那么这不是一个问题 对于一些代码,下面是我如何在Silverlight应用程序中绑定数据:&引用;“重复”;使用NHibernate、Linq to NHibernate和Castle.Windsor时,数据填充到Silverlight 4 Gridview中,nhibernate,silverlight-4.0,castle-windsor,linq-to-nhibernate,Nhibernate,Silverlight 4.0,Castle Windsor,Linq To Nhibernate,我目前面临的问题如下: 我的Silverlight 4应用程序中有一个Gridview,其中填充了数据。但是,数据是从数据库带回的对象集合中的第一个条目,并在网格视图中重复x次 当我在DAL和域服务上设置断点时,返回的数据是正确的,即它返回集合中所有不同的对象 如果我将数据绑定到非Silverlight组件,那么这不是一个问题 对于一些代码,下面是我如何在Silverlight应用程序中绑定数据: private void BindData() { _ctx = new
private void BindData()
{
_ctx = new ManufacturingDomainContext();
_loadOp = _ctx.Load( _ctx.GetWorkCellLoadGraphDataByIdQuery( "Test", DateTime.Today, DateTime.Today.AddDays( 14 ) ), TestCallBack, null );
}
private void TestCallBack(LoadOperation<WorkCellLoadGraphData> obj)
{
CustomerGrid.ItemsSource = _loadOp.Entities;
}
private void BindData()
{
_ctx=新的ManufacturingDomainContext();
_loadOp=_ctx.Load(_ctx.GetWorkCellLoadGraphDataByIdQuery(“Test”,DateTime.Today,DateTime.Today.AddDays(14)),TestCallBack,null);
}
私有void TestCallBack(加载操作obj)
{
CustomerGrid.ItemsSource=\u loadOp.Entities;
}
域服务代码为:
public IEnumerable<WorkCellLoadGraphData> GetWorkCellLoadGraphDataById(string workCellId, DateTime startDate, DateTime endDate)
{
WorkCellLoadGraphData data = new WorkCellLoadGraphData();
var result = ManufacturingDao.Instance.GetWorkCellLoadGraphDataByIdA(workCellId, startDate, endDate);
return result;
}
public IEnumerable GetWorkCellLoadGraphDataById(字符串workCellId、DateTime startDate、DateTime endDate)
{
WorkCellLoadGraphData=新WorkCellLoadGraphData();
var result=ManufacturingDao.Instance.GetWorkCellLoadGraphDataByIdA(workCellId、startDate、endDate);
返回结果;
}
最后,DAL代码是:
公共IList GetWorkCellLoadGraphDataByIdA(字符串workCellId、DateTime startDate、DateTime endDate)
{
IList results=新列表()
使用(var session=this.GetSession())
{
var-criteria=session.CreateCriteria(typeof(WorkCellLoadGraphData));
标准.SetProjection(
投影。投影列表()
.Add(Projections.Property(WorkCellLoadGraphData.WorkCellIdPropertyName),“WorkCellId”)
.Add(Projections.Property(WorkCellLoadGraphData.FromTimePropertyName),“FromTime”)
.Add(Projections.Property(WorkCellLoadGraphData.DurationPropertyName),“DurationInMinutes”)
);
条件.Add(限制.InsensitiveLike(WorkCellLoadGraphData.WorkCellIdPropertyName,workCellId));
添加(限制.Between(WorkCellLoadGraphData.FromTimePropertyName、startDate、endDate));
标准.SetResultTransformer(新别名为BeanResultTransformer(类型为(WorkCellLoadGraphData)));
结果=标准。列表();
}
foreach(结果中的var x)
Logger.Info(x.ToString());
返回结果;
}
作为一个初学者,我不确定哪一个领域会成为问题所在。我尝试过设置断点,但对于异步调用,事情并不是那个么容易做到
另外,我必须补充一点,通常,我会从我的POCO类调用DAL代码,而不是完全绕过POCO
有人能帮忙吗
David好的,经过一段时间的努力,我们发现了问题所在。实际上,在我们返回的对象集合中,如下所示:
- “someID”,今天,1
- “某某”,明天,1
- “someID”,下个月,1
- “someID”,今天,1
- “某某”,明天,1
- “someID2”,下个月,1
using (var session = this.GetSession())
{
var criteria = session.CreateCriteria(typeof(WorkCellLoadGraphData));
criteria.SetProjection(
Projections.ProjectionList()
.Add(Projections.Property(WorkCellLoadGraphData.WorkCellIdPropertyName), "WorkCellId")
.Add(Projections.Property(WorkCellLoadGraphData.FromTimePropertyName), "FromTime")
.Add(Projections.Property(WorkCellLoadGraphData.DurationPropertyName), "DurationInMinutes")
);
criteria.Add(Restrictions.InsensitiveLike(WorkCellLoadGraphData.WorkCellIdPropertyName, workCellId));
criteria.Add(Restrictions.Between(WorkCellLoadGraphData.FromTimePropertyName, startDate, endDate));
criteria.SetResultTransformer(new AliasToBeanResultTransformer(typeof(WorkCellLoadGraphData)));
results = criteria.List<WorkCellLoadGraphData>();
}
foreach (var x in results)
Logger.Info(x.ToString());
return results;
}