Advertisement
Guest User

Untitled

a guest
Apr 29th, 2017
614
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.86 KB | None | 0 0
  1. using ServiceStack.DataAnnotations;
  2. using ServiceStack.Model;
  3. using ServiceStack.OrmLite;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Linq;
  8. using System.Linq.Expressions;
  9. using ServiceStack.OrmLite.Sqlite;
  10.  
  11. var dbFactory = new OrmLiteConnectionFactory(":memory:", SqliteDialect.Provider);
  12. var db = dbFactory.Open(); // Open ADO.NET DB Connection
  13.  
  14. [Alias("Dic")]
  15. public class Dic : IHasId<int>
  16. {
  17. [PrimaryKey, AutoIncrement]
  18. public int Id { get; set; }
  19.  
  20. public int DicNum { get; set; }
  21.  
  22. public int DicCode { get; set; }
  23.  
  24. public string DicDecode { get; set; }
  25.  
  26. public string Description { get; set; }
  27. }
  28.  
  29. [Alias("Predmet")]
  30. public class Subject : IHasId<int>
  31. {
  32. [PrimaryKey, AutoIncrement]
  33. public int Id { get; set; }
  34.  
  35. [Alias("PType")]
  36. public int ParentDicType { get; set; }
  37.  
  38. [Alias("PCode")]
  39. public int ChildDicCode { get; set; }
  40.  
  41. [Alias("PValue")]
  42. public string Value { get; set; }
  43.  
  44. [Alias("PDescription")]
  45. public string Description { get; set; }
  46.  
  47. [References(typeof(Person))]
  48. public Nullable<long> PersonId { get; set; }
  49.  
  50. public Dic Parent { get; set; }
  51.  
  52. public Dic Child { get; set; }
  53. }
  54.  
  55. [Alias("Person")]
  56. public class Person : IHasId<long>
  57. {
  58. [PrimaryKey, AutoIncrement]
  59. public long Id { get; set; }
  60. public string Pib { get; set; }
  61. [Alias("Bd")]
  62. public Nullable<int> BirthdaySingle { get; set; }
  63. [Alias("Inn")]
  64. public string IdentityCode { get; set; }
  65. [Alias("Bp")]
  66. public string BirthPlace { get; set; }
  67. [Alias("Lp")]
  68. public string LivePlace { get; set; }
  69. [Alias("Doc")]
  70. public string Document { get; set; }
  71. [Alias("Gr")]
  72. public string Nationality { get; set; }
  73. [Alias("Org")]
  74. public string Organization { get; set; }
  75. [Alias("Pseudo")]
  76. public string Pseudonym { get; set; }
  77. [Reference]
  78. public List<Subject> Subjects { get; set; }
  79. }
  80.  
  81. long CountByCondition<T>(Expression<Func<T, bool>> predicate) where T: class
  82. {
  83. try
  84. {
  85. // bug: OrmLite !string.IsNullOrWhiteSpace(someStringValue) function causes error while building predicate
  86. /*var q = Database.From<T>();
  87. q = q.Where(predicate);
  88. string cnt = q.ToCountStatement();
  89. string slt = q.ToSelectStatement();
  90. return Database.Scalar<long>(cnt, q.Params);
  91. return id;*/
  92. return db.Count<T>(predicate);
  93. }
  94. catch (Exception ex)
  95. {
  96. Console.WriteLine("Error in executing query:" + Environment.NewLine);
  97. Console.WriteLine(ex.Message);
  98. }
  99. return -1;
  100. }
  101.  
  102. Expression<Func<Person, bool>> GetSecondLambda()
  103. {
  104. Expression<Func<Person, bool>> secondLambda = pvm => pvm.Pib.Contains("BDV") &&
  105. pvm.BirthdaySingle == 19880427 &&
  106. pvm.IdentityCode.Contains("454185662") &&
  107. pvm.BirthPlace.Contains("USA") &&
  108. pvm.LivePlace.Contains("NEW YORK") &&
  109. pvm.Document.Contains("QWE17277ASD") &&
  110. pvm.Nationality.Contains("USA") &&
  111. pvm.Organization.Contains("INDUSTRIES") &&
  112. pvm.Pseudonym.Contains("AGAPIT") &&
  113. Sql.In(pvm.Id, db.From<Subject>().Where(svm => (svm.ParentDicType == 10000 &&
  114. (svm.Value.Contains("063") ||
  115. svm.Value.Contains("099") ||
  116. svm.Value.Contains("050"))) &&
  117. (svm.ParentDicType == 11000 && svm.Value.Contains("AA7495CH")) &&
  118. (svm.ParentDicType == 12000 && svm.Value.Contains("PM-9")) &&
  119. (svm.ParentDicType == 13000 && svm.Value.Contains("QWERTY@MAIL.RU")) &&
  120. (svm.ParentDicType == 14000 && svm.Value.Contains("VK.COM")) &&
  121. (svm.ParentDicType == 15000 && svm.Value.Contains("TEST")))
  122. .SelectDistinct(svm => svm.PersonId));
  123. return secondLambda;
  124. }
  125.  
  126. Console.Write("Trying to run second query...");
  127. var secondCount = CountByCondition(GetSecondLambda());
  128. if (secondCount != -1)
  129. {
  130. Console.WriteLine("Success");
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement