草庐IT

避免全表扫描

全部标签

c# - 如何避免代码中枚举值与数据库中相应值之间的依赖关系?

我有许多用户权限,这些权限在我的ASP.NET应用程序中经过测试。这些权限值在枚举中引用,这样我就可以像这样方便地测试权限:btnCreate.Enabled=PermissionManager.TestPermission(Permission.AllowCreate);但是,我也将这些权限存储在数据库中,因为我需要保存有关它们的更多信息,而不仅仅是它们的ID。但这在枚举值和数据库中的值之间产生了可怕的依赖性,对任何一个的更改都经过深思熟虑,我在整个应用程序中都遇到了问题。有没有更好的方法解决这个问题?以前有人处理过这个问题吗? 最佳答案

c# - 执行大量并发 INSERT 时如何避免 "Violation of UNIQUE KEY constraint"

我正在执行许多并发SQLINSERT语句,这些语句在UNIQUEKEY约束上发生冲突,即使我也在单个事务中检查给定键的现有记录。我正在寻找一种方法来消除或最大限度地减少我遇到的碰撞数量,同时又不会损害性能(太多)。背景:我正在开发一个ASP.NETMVC4WebApi项目,该项目接收大量对INSERT记录的HTTPPOST请求。它每秒收到大约5K-10K请求。该项目的唯一职责是删除重复数据和汇总记录。写起来很重;它的读取请求量相对较小;所有这些都使用带有IsolationLevel.ReadUncommitted的事务。数据库架构这是数据库表:CREATETABLE[MySchema]

c# - 如何利用泛型来填充派生类模型以避免代码重复?

我有2种类型,每种类型都有不同的处理逻辑。基于该处理,我正在准备一个结果并将其返回给消费者(mvc应用程序、控制台应用程序等)类型1类型2现在的问题是一些代码在这两种类型中是通用的。唯一不同的部分是两种类型的类(Type1Manager,Type2Manager)它实际上包含处理type1和type2以及准备结果的逻辑(Type1Model,Type2Model)。publicclassVariant{publicintId{get;set;}publicstringName{get;set;}publicListSubvariants{get;set;}}publicclassSub

c# - 我可以避免存储 MS Exchange 凭据,同时仍然能够进行身份验证(针对 EWS)吗?

我正在构建一个应用程序,用于在用户的ExchangeServer帐户(支持2007-2013版本)和应用程序之间同步数据。应用程序不能使用模拟(至少在典型情况下不能),因为用户可以在任意数量的域和交换服务器上。我知道一开始我将不得不询问他们的用户名/电子邮件地址和密码。但是,如果不需要的话,我真的不想负责存储这些凭据(即使它们是加密的,我也不愿意)。我不确定要问什么问题,所以我要回答这些问题:ExchangeServer如何进行身份验证?用户的凭据是按原样直接发送到服务器,还是在通过网络发送之前一起散列?如果对它们进行哈希处理,我如何获取/生成此哈希值以在后续身份验证中重复使用?Exc

c# - 避免在重建期间删除当前的 Lucene.NET 索引

我是Lucene.NET的新手,但我正在使用anopensourcetool专为SitecoreCMS打造它使用Lucene.NET从CMS中索引大量内容。我昨天确认,当我重建索引时,当前的索引文件会被清除干净,因此依赖索引的任何东西在大约30-60秒(完整索引重建的时间)内都没有数据。是否有最佳实践或方法让Lucene.NET在新索引完全重建之前不覆盖当前索引文件?我基本上认为我希望它写入新的临时索引文件,并且在重建完成后让这些文件覆盖当前索引。我正在谈论的例子:建立新索引(~30秒)索引有大约500个文档使用代码访问索引中的数据并在网站上显示重建索引(~30秒)现在读取数据索引的任

c# - 如何避免使用 async void 事件处理程序重入?

在WPF应用程序中,我有一个通过网络接收消息的类。每当所述类的对象收到一条完整的消息时,就会引发一个事件。在应用程序的主窗口中,我有一个事件处理程序订阅了该事件。保证在应用程序的GUI线程上调用事件处理程序。无论何时调用事件处理程序,都需要将消息的内容应用于模型。这样做可能会非常昂贵(在当前硬件上>200ms)。这就是使用Task.Run将应用消息卸载到线程池的原因。现在,可以非常连续地接收消息,因此可以在仍在处理之前的更改时调用事件处理程序。确保一次只应用一条消息的最简单方法是什么?到目前为止,我已经得出以下结论:usingSystem;usingSystem.Threading.T

c# - 条码扫描windows phone 8

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我正在寻找适用于WindowsPhone8的条形码扫描库。我面临的最大问题是必须完全管理它,因为它必须发送到Store,而且我们能找到的所有移植似乎都依赖于native代码库。图书馆应该扫描一维和二维条码。斯特凡诺

c# - 如何避免在 RX 中使用 Subjects

所以我一直在到处阅读Subject的用法是“坏的”——我有点同意这个推理。但是,我正在尝试想出避免使用它的最佳方法并举一个例子。目前我有一个抽象类用于我的持久化配置类,它有一个protectedSave()每当更改属性时调用它的方法应该持久化该类。此消息将消息发送到Subject通过IObservable暴露序列化服务监听和序列化类的接口(interface)。这在当时看来是最明显、最简单、最快捷的实现方式。那么不使用Subject的RX方法是什么?我会改为公开事件并使用Observable.FromEventPattern()吗?订阅它?-因为这似乎是一种更复杂的方法。

c# - 如何真正避免在 Xamarin.Forms 中同时单击多个按钮?

我在一个View中使用了多个按钮,每个按钮都指向它自己的弹出页面。同时点击多个按钮时,会一次跳转到不同的弹出页面。我创建了一个包含3个按钮的示例内容页面(每个按钮转到不同的弹出页面)来演示这个问题:XAML页面:C#事件处理程序:voidButton1Clicked(objectsender,EventArgse){//...dosomethingfirst...page1.IsVisible=true;Console.WriteLine("Button1Clicked!");}voidButton2Clicked(objectsender,EventArgse){//...dosom

c# - 避免 InvalidOperationException : Collection was modified? 的最佳实践

我经常需要这样的东西:foreach(Linelineinlines){if(line.FullfilsCertainConditions()){lines.Remove(line)}}这不起作用,因为我总是得到一个InvalidOperationException,因为Enumerator在循环期间被更改了。所以我将所有此类循环更改为以下内容:Listremove=newList();foreach(Linelineinlines){if(line.FullfilsCertainConditions()){remove.Add(line)}}foreach(Linelineinrem