Property_Guid_Test.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using System.ComponentModel.DataAnnotations;
  2. using System.ComponentModel.DataAnnotations.Schema;
  3. using Microsoft.VisualStudio.TestTools.UnitTesting;
  4. namespace Vitorm.MsTest.CustomTest
  5. {
  6. [TestClass]
  7. public class Property_Guid_Test
  8. {
  9. [TestMethod]
  10. public void Test()
  11. {
  12. using var dbContext = DataSource.CreateDbContext();
  13. var dbSet = dbContext.DbSet<UserInfo>();
  14. dbSet.TryDropTable();
  15. dbSet.TryCreateTable();
  16. Guid guid; UserInfo user;
  17. {
  18. user = dbSet.Add(new UserInfo { name = "user1" });
  19. user = dbSet.Add(new UserInfo { name = "user2" });
  20. guid = user.guid;
  21. }
  22. DataSource.WaitForUpdate();
  23. {
  24. user = dbSet.Get(guid);
  25. Assert.AreEqual("user2", user?.name);
  26. }
  27. }
  28. class UserInfo
  29. {
  30. [Key]
  31. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  32. public Guid guid { get; set; }
  33. public string name { get; set; }
  34. }
  35. [TestMethod]
  36. public void Test2()
  37. {
  38. using var dbContext = DataSource.CreateDbContext();
  39. var dbSet = dbContext.DbSet<UserInfo2>();
  40. dbSet.TryDropTable();
  41. dbSet.TryCreateTable();
  42. Guid guid = Guid.NewGuid();
  43. UserInfo2 user;
  44. {
  45. user = dbSet.Add(new UserInfo2 { guid = guid, name = "user1" });
  46. DataSource.WaitForUpdate();
  47. try
  48. {
  49. dbSet.Add(new UserInfo2 { guid = guid, name = "user1" });
  50. Assert.Fail("should not be able to add same key twice");
  51. }
  52. catch (Exception ex)
  53. { }
  54. try
  55. {
  56. user = dbSet.Add(new UserInfo2 { name = "user2" });
  57. Assert.Fail("should not be able to add entity without key");
  58. }
  59. catch (Exception ex)
  60. { }
  61. }
  62. {
  63. user = dbSet.Get(guid);
  64. Assert.AreEqual("user1", user?.name);
  65. }
  66. }
  67. class UserInfo2
  68. {
  69. [Key]
  70. public Guid guid { get; set; }
  71. public string name { get; set; }
  72. }
  73. }
  74. }