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

时间:2017-01-25 14:57:12

标签: c# asp.net sql-server entity-framework

我需要生成一个在数据库中不存在的随机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();

1 个答案:

答案 0 :(得分:0)

正如@Tanner所问,你为什么需要这个功能?

这将有助于我们引导您找到最佳解决方案。

有一些合理的用例(例如性能),您不希望往返数据库以获取实体的ID。

在大多数情况下,最好让数据库为您处理此问题,除非您有令人信服的理由不这样做。

要回答你的问题,有两种方法可以解决这个问题。

A)改为使用GUID。它们被设计为唯一的,您可以在实体提交之前和之后为实体分配一个以识别它。由于围绕为此目的使用GUIDS的性能问题,您可能仍希望使用int作为主键。

B)使用HiLo密钥生成策略。这将允许您在保存实体之前分配ID。此功能仅在.NET Core版本的Entity Framework(和nHibernate)中可用。

http://www.talkingdotnet.com/use-hilo-to-generate-keys-with-entity-framework-core/ https://channel9.msdn.com/Blogs/Seth-Juarez/Key-Generation-Strategies-in-Entity-Framework-7