C# NHibernate“;多行“;错误
我有一个系统,其中有用户,每个用户可以有多个票据,每个票据分配给一个模拟器。 有一个函数可以获取特定状态的所有票据,这返回了一个奇怪的错误C# NHibernate“;多行“;错误,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我有一个系统,其中有用户,每个用户可以有多个票据,每个票据分配给一个模拟器。 有一个函数可以获取特定状态的所有票据,这返回了一个奇怪的错误 public class User { public int ID { get; set; } } public class Simulator { public int ID { get; set; } } public class Ticket { public int ID { get; set; } public
public class User
{
public int ID { get; set; }
}
public class Simulator
{
public int ID { get; set; }
}
public class Ticket
{
public int ID { get; set; }
public User User { get; set; }
public Simulator Simulator { get; set; }
}
NHibernate功能如下所示:
public IList<Ticket> GetActiveTicketsPerUser(int userID)
{
var criteria = Repository.Session.GetSession().CreateCriteria("GetTickets", "Ticket");
criteria.Add(Restrictions.Eq("Ticket.User.ID", userID));
criteria.Add(Restrictions.Eq("Ticket.Status.ID", new List<int>() { 1, 2 }); //Status the active tickets
return criteria.List<Ticket>();
}
它使用一个表(一个视图),因为有一些来自其他数据库的记录/字段,我甚至不知道它是如何到达那里的
这个错误只有在我尝试“快速”完成时才会发生,如果我逐行调试每个函数,错误就不会发生。
我猜当NHibernate以它应该的速度运行时,它返回的是错误的东西,而当我缓慢运行时。。。工作
我已经用此消息/类似消息检查了其他问题,但我仍然无法理解
究竟发生了什么?我如何解决这个问题?这可能是票证、用户和模拟器类中ID的类似命名吗
顺便说一句,我注意到这个类被称为Simulator,但错误是这样说的:Entity.Simulator我留下这个供将来参考:当这个错误发生时,它与NHibernate无关。它在数据库中(一如既往) 如果出现此错误,并且类映射正确,请按照步骤获取NHibernate正在使用的命令的查询/查询结果,您会注意到DB结构/布局中存在错误。 在某个地方,有一个结果返回多个具有唯一ID的同一对象。I“english”编辑了我的语言,但名称是正确的(Simulator)。至于ID,我不知道,这在大多数情况下都有效,就在有一大堆票的时候。同样的结构也适用于各种其他部门,没有问题。。。
public HttpResponseMessage GetActiveTickets()
{
try
{
int userID = Convert.ToInt32(HttpContext.Current.Items["UserID"]);
IList<Ticket> ticketList = Service.GetTickets(userID);
//Converting to another type specific to return in the HttpResponseMessage
IList<TicketResponse> rTickets = new List<TicketResponse>();
for(int i = 0; i < ticketList.Count; i++)
{
TicketResponse ticket = TResponse.Convert(ticketList[i]);
rTickets.Add(ticket);
}
return Request.CreateResponse(HttpStatusCode.OK, rTickets);
}
catch (Exception ex)
{
}
}
public class TicketMap : ClassMapping<Ticket>
{
Lazy(true);
ID(x => x.ID, map => { map.Column("TicketID"); map.Generator(Generators.Identity); });
ManyToOne(x => x.Simulator, map => { map.Column("SimulatorID"); map.Cascade(Cascade.None); });
}