C# EF Code First-如果未手动设置值,则指定自动递增的值

C# EF Code First-如果未手动设置值,则指定自动递增的值,c#,asp.net,entity-framework,ef-code-first,C#,Asp.net,Entity Framework,Ef Code First,首先使用EF6.X代码开发Asp.Net应用程序。 考虑下面的模型: public class Product { public int ProductId {get;set;} ... } 现在我需要达到以下要求: 创建新记录时 它应该能够手动指定ProductId。 若未为ProductId设置值,则为自动递增的值 应在保存记录时自动设置。 这方面的最佳解决方案是什么? EF中是否有内置支持 这将令人困惑: 假设当前产品Id为100。用户通过手动设置产品Id 150来创建新记录

首先使用EF6.X代码开发Asp.Net应用程序。 考虑下面的模型:

public class Product
{
   public int ProductId {get;set;}
   ...
}
现在我需要达到以下要求:

创建新记录时

它应该能够手动指定ProductId。 若未为ProductId设置值,则为自动递增的值 应在保存记录时自动设置。 这方面的最佳解决方案是什么? EF中是否有内置支持

这将令人困惑:
假设当前产品Id为100。用户通过手动设置产品Id 150来创建新记录。那么下一个值是101还是151?

您可以使用HiLo生成器生成ID值。HiLo生成器用于特别解决这个确切的场景,特别是分布式数据库。下面是一篇文章,展示了如何使用EF6实现这一点


简而言之,您使用一个单独的序列表,其中包含上次生成的id值,并且每次保存一个新项时,该值都会递增

学习了一个新术语HiLo生成器:。谢谢顺便说一句,是否存在HiLo的nuget包/库?不确定是否存在nuget包。顺便说一句,文章链接,给出了一个源代码作为例子。你可以试一试。是的,我会试一试。谢谢