繁体   English   中英

实体框架,如何生成数据库中不存在的随机整数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM