123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- using System.ComponentModel.DataAnnotations;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- namespace Vitorm.MsTest.CustomTest
- {
- /// <summary>
- /// https://www.damirscorner.com/blog/posts/20240223-GuidValuesInMySqlWithEfCore.html
- /// need to add "GuidFormat=Binary16;" to connection string if using Guid
- ///
- /// </summary>
- [TestClass]
- public class Property_Guid_Test
- {
- [TestMethod]
- public void Test()
- {
- using var dbContext = DataSource.CreateDbContext();
- var dbSet = dbContext.DbSet<UserInfo>();
- dbSet.TryDropTable();
- dbSet.TryCreateTable();
- Guid guid; UserInfo user;
- {
- user = dbSet.Add(new UserInfo { name = "user1" });
- user = dbSet.Add(new UserInfo { name = "user2" });
- guid = user.guid;
- }
- DataSource.WaitForUpdate();
- {
- user = dbSet.Get(guid);
- Assert.AreEqual("user2", user?.name);
- }
- }
- class UserInfo
- {
- [Key]
- public Guid guid { get; set; } = Guid.NewGuid();
- public string name { get; set; }
- }
- [TestMethod]
- public void Test2()
- {
- using var dbContext = DataSource.CreateDbContext();
- var dbSet = dbContext.DbSet<UserInfo2>();
- dbSet.TryDropTable();
- dbSet.TryCreateTable();
- Guid guid = Guid.NewGuid();
- UserInfo2 user;
- {
- user = dbSet.Add(new UserInfo2 { guid = guid, name = "user1" });
- DataSource.WaitForUpdate();
- try
- {
- dbSet.Add(new UserInfo2 { guid = guid, name = "user1" });
- Assert.Fail("should not be able to add same key twice");
- }
- catch (Exception ex)
- { }
- try
- {
- user = dbSet.Add(new UserInfo2 { name = "user2" });
- Assert.Fail("should not be able to add entity without key");
- }
- catch (Exception ex)
- { }
- }
- {
- user = dbSet.Get(guid);
- Assert.AreEqual("user1", user?.name);
- }
- }
- class UserInfo2
- {
- [Key]
- public Guid guid { get; set; }
- public string name { get; set; }
- }
- }
- }
|