DbFunction_Test.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System.Data;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. namespace Vitorm.MsTest.CustomTest
  4. {
  5. [TestClass]
  6. public class DbFunction_Test
  7. {
  8. [TestMethod]
  9. public void Test_DbFunction()
  10. {
  11. using var dbContext = DataSource.CreateDbContext();
  12. var userQuery = dbContext.Query<User>();
  13. // select IF(500<1000,true,false)
  14. {
  15. var query = userQuery.Where(u => DbFunction.Call<bool>("IF", u.fatherId != null, true, false));
  16. var sql = query.ToExecuteString();
  17. var userList = query.ToList();
  18. Assert.AreEqual(3, userList.Count);
  19. Assert.AreEqual(3, userList.Last().id);
  20. }
  21. {
  22. var query = userQuery.Where(u => u.birth < DbFunction.Call<DateTime>("now"));
  23. var sql = query.ToExecuteString();
  24. var userList = query.ToList();
  25. Assert.AreEqual(6, userList.Count);
  26. }
  27. // coalesce(parameter1,parameter2, …)
  28. {
  29. var query = userQuery.Where(u => DbFunction.Call<int?>("coalesce", u.fatherId, u.motherId) != null);
  30. var sql = query.ToExecuteString();
  31. var userList = query.ToList();
  32. Assert.AreEqual(3, userList.Count);
  33. Assert.AreEqual(1, userList.First().id);
  34. }
  35. }
  36. }
  37. }