1
我在我的應用程序和firebird中使用nhibernate作爲orm作爲數據庫。 目前正試圖行使membebership提供商,但我有以下錯誤消息NHibernate.Driver.FirebirdClientDriver不支持多個查詢
The driver NHibernate.Driver.FirebirdClientDriver does not support multiple queries.
有下面的代碼
#region Test FindUserByEmail
[Test]
public void FindUserByEmail()
{
//Arrange
var email = "[email protected]";
var recs = -1;
var expectedRecords = 1;
//Act
var actual = _provider.FindUsersByEmail(email, 0, 99, out recs);
//Assert
Assert.AreEqual(expectedRecords, recs);
Assert.AreEqual(expectedRecords, actual.Count);
}
#endregion
我的測試方法是否有火鳥NHibernate的驅動程序接受多個查詢解決方案嗎?
更新添加FindUsersByEmail方法
public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
{
CheckParameter(ref emailToMatch, false, false, false, 100, "emailToMatch");
if (pageIndex < 0)
{
throw new ArgumentException("The pageIndex must be greater than or equal to zero.", "PageIndex");
}
if (pageSize < 1)
{
throw new ArgumentException("The pageSize must be greater than zero.", "pageSize");
}
long upperBound = (long)pageIndex * pageSize + pageSize - 1;
if (upperBound > Int32.MaxValue)
{
throw new ArgumentException("The combination of pageIndex and pageSize cannot exceed the maximum value of System.Int32.", "pageIndex and pageSize");
}
totalRecords = 0;
MembershipUserCollection users = new MembershipUserCollection();
IList results;
using (ISession session = SessionProvider.Instance.OpenSession())
{
using (ITransaction tran = session.BeginTransaction())
{
results = session.CreateMultiCriteria()
.Add(session.CreateCriteria(typeof(User)).Add(Restrictions.Like("UpperEmail", emailToMatch.ToUpper())).SetFirstResult(pageIndex * pageSize).SetMaxResults(pageSize))
.Add(session.CreateCriteria(typeof(User)).Add(Restrictions.Like("UpperEmail", emailToMatch.ToUpper())).SetProjection(Projections.RowCountInt64()))
.List();
tran.Commit();
}
}
var dbUsers = (List<User>)results[0];
totalRecords = (int)results[1];
foreach (User u in dbUsers)
{
users.Add(new MembershipUser(Name,
u.UserName,
u.Id,
u.EMail,
u.PasswordQuestion,
u.Comment,
u.IsApproved,
u.IsLockedOut,
u.CreationDate,
GetNullableDateTime(u.LastLoginDate),
GetNullableDateTime(u.LastActivityDate),
GetNullableDateTime(u.LastPasswordChangeDate),
GetNullableDateTime(u.LastLockedOutDate)));
}
return users;
你能顯示FindUsersByEmail()的代碼嗎? – Firo
@Firo增加了FindUsersByEmail() – Grunf