[英]Entity Framework, How to generate a random int number that doesn't exist in database
我需要生成一个数据库中不存在的随机int数,以避免重复数据。 换句话说,在生成生成的代码之前,我需要在数据库中检查代码是否不存在。
这是我的实体的样子:
public partial class User
{
public int Id { get; set; }
public string PhoneNumber { get; set; }
public string Code { get; set; }
}
这是我生成代码的方式:
User user new User();
Random random = new Random();
user.Code = random.Next().ToString();
正如@Tanner所问,为什么需要此功能?
这将帮助我们将您引向最佳解决方案。
在某些合理的用例(例如性能)中,您不希望往返数据库以获取实体的ID。
也就是说,在大多数情况下,最好让数据库为您处理此事,除非您有令人信服的理由不这样做。
要回答您的问题,有两种方法可以解决此问题。
A)改用GUID。 它们的设计是唯一的,您可以在提交实体之前和之后将一个分配给您的实体以进行标识。 由于出于此目的而使用GUIDS的性能问题,您可能仍想将int用作主键。
B)使用HiLo密钥生成策略。 这样,您可以在保存实体之前分配ID。 此功能仅在Entity Framework(和nHibernate)的.NET Core版本中可用。
http://www.talkingdotnet.com/use-hilo-to-generate-keys-with-entity-framework-core/ https://channel9.msdn.com/Blogs/Seth-Juarez/Key-Generation-Strategies-实体框架7
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.