C# 代码id实体框架的通用函数

C# 代码id实体框架的通用函数,c#,entity-framework,C#,Entity Framework,因此,我想知道是否有人知道这样的最佳实践: private string NewCode<U>(IQueryable<U> table, string mask = "" ) 如果您有20张表格,其中一些是: 组织 部门 办公室 现在我在列Id中总是有一个Guid,在列代码中总是有一个FriendlyCode 现在,当用户在前端输入一个友好代码时,我想给他下一个可用的友好代码。代码必须是唯一的 对于每个表,我想定义一个生成id的掩码 例如,如果我有部门,我希望关键的是

因此,我想知道是否有人知道这样的最佳实践:

private string NewCode<U>(IQueryable<U> table, string mask = "" )
如果您有20张表格,其中一些是: 组织 部门 办公室

现在我在列Id中总是有一个Guid,在列代码中总是有一个FriendlyCode

现在,当用户在前端输入一个友好代码时,我想给他下一个可用的友好代码。代码必须是唯一的

对于每个表,我想定义一个生成id的掩码 例如,如果我有部门,我希望关键的是像A0001,A0002,A0003。。。 例如,如果我有部门,我也希望关键的是像B0001,B0002,BA0003

因此,当用户定义部门类型时,他会定义代码的掩码,如:

mask1:A

mask2:B

那么算法应该只增加?戴面具

我还会在某个地方定义将用于哪个表

我知道你可以这样做:

private string NewCode<U>(IQueryable<U> table, string mask = "" )
但我不知道如何编写这样的算法。我知道如何使用纯sql并执行它,但如果可能的话,我想继续使用Entity Framework,因为应用程序的所有其他部分都是基于Entity Framework的

希望这是有意义的


谢谢

您有两种选择1。创建一个SP并在EF 2中调用它。在SQL Server中创建一个函数,然后将该函数用于列,这样在插入时,默认值将从该函数自动生成,而不是您必须生成的值。这将是更快和安全的使用。我同意@saravanan。在C代码中执行此操作需要防止并发冲突。在可以使用锁的存储过程中,这要容易得多。