首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在实体框架中,如何获得条件序列值?

在实体框架中,如何获得条件序列值?
EN

Software Engineering用户
提问于 2020-11-24 04:46:44
回答 1查看 389关注 0票数 0

我的应用程序中有实体需要一个惟一的友好标识符,该标识符包含一个对子集唯一的序列整数。例如,在项目管理软件中,您可能有一个名为"SUPPORT“的项目,然后与该项目相关的案例自动编号为"SUPPORT-1”、"SUPPORT-2“等。

Q:如何获得与实体实例上的其他属性有条件的唯一标识符?

我已经(暂时)在我的应用程序中实现了这一点,方法是重写DbContext.SaveChanges()方法,检查数据库中与项目相关的最新值,然后创建一个带有项目名称和序列号的字符串。这似乎不健全,我正在寻找一个适当的模式。

研究模式--我在EF核心文件中找到了C2方法--但我不知道如何实现这个方法,这取决于项目的价值(因此,“支持”中的案例是唯一的序列,而不是与“软件”项目中的案例重叠)。

我目前正在使用实体框架核心3.1。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2020-11-24 05:44:27

您只需将最新的案例编号作为字段存储在项目记录中,并在创建case的新实例时将它们组合起来。这将是交换清洁的模式和一点空间的效率。小心并发。

您还可以将子案例的集合添加到您的项目实体中,并让EF为您填充它,这样您就可以获取计数/最新的子实例并调整新实体上的数字。这保留了您的模型和空间,但确实花费了更多的时间和带宽。小心并发。

最后,您可以为数据库编写一个触发器,该触发器可以执行SaveChanges()中的操作,但可以直接在数据库中执行。这将比目前的方法更有效,也更健壮,但是将新案例插入数据库需要花费更长的时间。您的RDBMS应该为您处理并发。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/419293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档