using System.ComponentModel.DataAnnotations;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Vitorm.MsTest.CustomTest
{
///
/// https://www.damirscorner.com/blog/posts/20240223-GuidValuesInMySqlWithEfCore.html
/// need to add "GuidFormat=Binary16;" to connection string if using Guid
///
///
[TestClass]
public class Property_Guid_Test
{
[TestMethod]
public void Test()
{
using var dbContext = DataSource.CreateDbContext();
var dbSet = dbContext.DbSet();
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();
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; }
}
}
}