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