⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fixture.cs

📁 NHibernate NET开发者所需的
💻 CS
字号:
using System;
using System.Collections.Generic;
using NHibernate.Criterion;
using NUnit.Framework;

namespace NHibernate.Test.NHSpecificTest.NH1293
{
	[TestFixture]
	public class Fixture : BugTestCase
	{
		[Test]
		public void Criteria_Does_Not_Equal_To_HQL()
		{
			using (ISession s = OpenSession())
			{
				using (ITransaction tx = s.BeginTransaction())
				{
					Customer c = new Customer("Somebody");
					c.Category = new Category("User");
					s.Save(c.Category);
					c.IsActive = true;
					c.Category.IsActive = false; // this cause diff in query results
					s.Save(c);
					tx.Commit();
				}
			}

			using (ISession s = OpenSession())
			{
				s.DisableFilter("onlyActive");
				IFilter fltr = s.EnableFilter("onlyActive");
				fltr.SetParameter("activeFlag", 1);

				// with HQL, Category.IsActive=true filter applied, result count=2
				IQuery hqlQuery = s.CreateQuery("from Customer c where c.Category.Name = ?");
				hqlQuery.SetParameter(0, "User"); // note using positional parameters because of NH-1490
				IList<Customer> hqlResult = hqlQuery.List<Customer>();
				Console.WriteLine(hqlResult.Count);

				// with ICriteria, no Category.IsActive filter applied, result count=1
				ICriteria criteria = s.CreateCriteria(typeof (Customer), "cust").CreateCriteria("Category", "cat");
				criteria.Add(Restrictions.Eq("cat.Name", "User"));
				IList<Customer> criteriaResult = criteria.List<Customer>();

				Console.WriteLine(criteriaResult.Count);

				Assert.That(hqlResult.Count == criteriaResult.Count);
			}

			using (ISession s = OpenSession())
			{
				using (ITransaction tx = s.BeginTransaction())
				{
					s.Delete("from Customer");
					s.Delete("from Category");
					tx.Commit();
				}
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -