DbFunction_Test.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using Vit.Extensions.Vitorm_Extensions;
  3. using System.Data;
  4. namespace Vitorm.MsTest
  5. {
  6. [TestClass]
  7. public class DbFunction_Test
  8. {
  9. [TestMethod]
  10. public void Test_DbFunction()
  11. {
  12. using var dbContext = DataSource.CreateDbContext();
  13. var userQuery = dbContext.Query<User>();
  14. // select * from `User` as t0 where IIF(`t0`.`fatherId` is not null,true, false)
  15. {
  16. var query = userQuery.Where(u => DbFunction.Call<bool>("IIF", u.fatherId != null, true, false));
  17. var sql = query.ToExecuteString();
  18. var userList = query.ToList();
  19. Assert.AreEqual(3, userList.Count);
  20. Assert.AreEqual(3, userList.Last().id);
  21. }
  22. {
  23. var query = userQuery.Where(u => u.birth == DbFunction.Call<DateTime?>("datetime", "2021-01-01 00:00:00", "+2 hours"));
  24. var sql = query.ToExecuteString();
  25. var userList = query.ToList();
  26. Assert.AreEqual(1, userList.Count);
  27. Assert.AreEqual(2, userList.First().id);
  28. }
  29. {
  30. var query = userQuery.Where(u => u.birth == DbFunction.Call<DateTime>("datetime", "2021-01-01 00:00:00", "+" + u.id + " hours"));
  31. var sql = query.ToExecuteString();
  32. var userList = query.ToList();
  33. Assert.AreEqual(6, userList.Count);
  34. Assert.AreEqual(1, userList.First().id);
  35. }
  36. // coalesce(parameter1,parameter2, …)
  37. {
  38. var query = userQuery.Where(u => DbFunction.Call<int?>("coalesce", u.fatherId, u.motherId) != null);
  39. var sql = query.ToExecuteString();
  40. var userList = query.ToList();
  41. Assert.AreEqual(3, userList.Count);
  42. Assert.AreEqual(1, userList.First().id);
  43. }
  44. }
  45. }
  46. }