fixture.cs
来自「NHibernate NET开发者所需的」· CS 代码 · 共 207 行
CS
207 行
using System;
using System.Data;
using Iesi.Collections.Generic;
using NHibernate;
using NHibernate.SqlTypes;
using NHibernate.UserTypes;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH732
{
[TestFixture]
public class Fixture : BugTestCase
{
[Test]
public void CaseInsensitiveId()
{
using (ISession session = OpenSession())
{
User user = new User();
user.UserName = @"Domain\User";
session.Save(user);
Role role = new Role();
role.RoleName = "ADMINS";
session.Save(role);
session.Flush();
}
using (ISession session = OpenSession())
{
User user = (User) session.Load(typeof(User), "DOMAIN\\USER");
Role role = (Role) session.Load(typeof(Role), "Admins");
UserToRole userToRole = new UserToRole();
userToRole.User = user;
userToRole.Role = role;
session.Save(userToRole);
session.Flush();
}
using (ISession session = OpenSession())
{
User user = session.Get<User>("domain\\user");
Assert.AreEqual(1, user.UserToRoles.Count);
}
using (ISession session = OpenSession())
{
session.Delete("from System.Object o");
session.Flush();
}
}
}
public class CaseInsensitiveStringType : IEnhancedUserType
{
public SqlType[] SqlTypes
{
get { return new SqlType[] { new StringSqlType() }; }
}
public System.Type ReturnedType
{
get { return typeof (string); }
}
public new bool Equals(object x, object y)
{
return StringComparer.InvariantCultureIgnoreCase.Equals((string)x, (string)y);
}
public int GetHashCode(object x)
{
return StringComparer.InvariantCultureIgnoreCase.GetHashCode((string)x);
}
public object NullSafeGet(IDataReader rs, string[] names, object owner)
{
int ordinal = rs.GetOrdinal(names[0]);
string s = rs.GetString(ordinal);
return s;
/* Using this will work, because we normalize the returned value
* if(s==null)
return null;
return s.ToLower();
*/
}
public void NullSafeSet(IDbCommand cmd, object value, int index)
{
IDbDataParameter parameter = (IDbDataParameter)cmd.Parameters[index];
parameter.Value =
value == null ? DBNull.Value : value;
}
public object DeepCopy(object value)
{
return value.ToString();
}
public bool IsMutable
{
get { return true; }
}
public object FromXMLString(string xml)
{
return xml;
}
public string ObjectToSQLString(object value)
{
return "'" + value.ToString() + "'";
}
public string ToXMLString(object value)
{
return value.ToString();
}
public object Replace(object original, object target, object owner)
{
return original;
}
public object Assemble(object cached, object owner)
{
return cached;
}
public object Disassemble(object value)
{
return value;
}
}
public class User
{
string userName;
ISet<UserToRole> userToRoles;
public virtual ISet<UserToRole> UserToRoles
{
get { return userToRoles; }
set { userToRoles = value; }
}
public virtual string UserName
{
get { return userName; }
set { userName = value; }
}
}
public class UserToRole
{
int id;
User user;
Role role;
int type;
public virtual int Id
{
get { return id; }
set { id = value; }
}
public virtual User User
{
get { return user; }
set { user = value; }
}
public virtual Role Role
{
get { return role; }
set { role = value; }
}
public virtual int Type
{
get { return type; }
set { type = value; }
}
}
public class Role
{
string roleName;
ISet<UserToRole> roleToUsers;
public virtual string RoleName
{
get { return roleName; }
set { roleName = value; }
}
public virtual ISet<UserToRole> RoleToUsers
{
get { return roleToUsers; }
set { roleToUsers = value; }
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?