首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#实体框架:确保每个条目是唯一的

C#实体框架:确保每个条目是唯一的
EN

Stack Overflow用户
提问于 2017-04-30 13:22:10
回答 2查看 106关注 0票数 1

我使用C#进行API调用,返回JSON,将其分解为嵌套对象,将每个对象分解为字段,并将字段放入Server表中。

有一个字段(OnlineURL)应该是唯一的。

实现这一目标的有效途径是什么?目前,我对从JSON中提取的每个嵌套对象进行数据库调用,然后使用if语句。但这是没有效率的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-30 13:48:09

数据库层

为数据库中的OnlineURL字段创建唯一的索引/约束将强制字段是唯一的,不管哪个系统/代码库引用它。这将导致应用程序错误地插入已经存在OnlineURL的新记录,或者将记录X更新为记录Y已经使用的OnlineURL。

应用层

当OnlineURL已经存在时,规则是什么?你拒绝这些数据吗?更新匹配行吗?也许您希望利用一个存储过程,它将基于OnlineURL插入一个新行,或者更新现有的行。这将将一个2查询进程转换为一个查询,这将对大规模插入产生影响。

假设您的应用程序是串行的,并且是唯一针对数据库工作的应用程序。您还可以保留一个OnlineURL的本地缓存,以便在循环期间使用,从数据库中读取一次列表,对照它检查每个传入记录,然后将插入的每个新OnlineURL添加到列表中。在初始列表中读取仅是一个查询,每个比较都是在内存中完成的。

票数 1
EN

Stack Overflow用户

发布于 2017-04-30 13:23:52

为该字段创建一个索引,它将是。

检查唯一性是必要的,如果不查询数据,则不能完全填充。这意味着您必须检查该列中的整个数据。第一个选项是使用填充因子为80的索引来改进查询,这样就可以避免插入导致的不必要的分页。

另一种选择是使用缓存,并取决于您的设置。您可以在内存中加载整个列并检查该列的唯一性。或者您可以使用像Redis这样的分布式缓存。无论哪种方法,都要分析复杂性、成本,你可能会认为索引是最符合人体工程学的选择。

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

https://stackoverflow.com/questions/43706860

复制
相关文章

相似问题

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