在C# .net中,多个客户同时写入数据会不会导致数据混乱?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C# .net中,多个客户同时写入数据会不会导致数据混乱?相关的知识,希望对你有一定的参考价值。
网站是aspx的,数据库是mssql2000,假设100个不同的人在客户端同时往数据库添加数据,客户添加的数据库有可能是相同的,但是数据库是不允许相同的,.net程序有判断。
我想要知道的是,这100个同时提交数据,往数据库添加数据。会不会造成数据混乱,结果相同的数据也被添加到数据库了呢?
添加数据的时候,数据库会有一个lock锁锁定数据的,并发的时候都要要排队的!! 参考技术B 这问题问的……你要没设计好互斥关系那妥妥的会啊。追问
哦
我是新手,在C#互斥是用什么方法呢?麻烦大神指点下
结合具体问题具体分析。
大体上比如:
1、数据库有主键吗?主键是自增还是用户手动插入?手动插入的话是否可能重复?重复的话如何回滚?是否需要重新提交?
2、同一条记录是否可能会同时删、改?如果有可能的话删、改的时候锁表吗?需不需要加互斥锁或信号量?加在哪里?是对整个数据库连接加锁还是对某一表加锁还是对某一操作加锁?
3、是否使用了事务?发生错误的时候回滚到哪一点?
谢谢,另外一个问题,就是100个不同的人在客户端同时访问是不是相当于多线程呢???
追答还是看你是怎么设计的。你是直连数据库还是通过 Web API?直连数据库的话支持多数据库实例吗?Web API 的话数据库连接对象是否用了单例模式?
c#单元测试:在单元测试中写入设置不会在user.config中保存值
【中文标题】c#单元测试:在单元测试中写入设置不会在user.config中保存值【英文标题】:c# Unit Test: Writing to Settings in unit test does not save values in user.config 【发布时间】:2011-02-11 07:32:51 【问题描述】:我正在运行 c# 单元测试(VS 2008)。在测试中,我确实写入了设置,这应该会导致将数据保存到 user.config。
Settings.Default.X = "History"; // X is string
Settings.Default.Save();
但这根本不会创建文件(我在“C:\Documents and Settings\HW\Local Settings\Application Data”下进行了交叉检查)。
如果我创建与控制台应用程序相同的东西,那么持久化数据就没有问题(相同的代码)。
我需要考虑在 UnitTest 中执行此操作有什么特别之处吗?
【问题讨论】:
【参考方案1】:我在 Windows 7 上使用 Visual Studio 2010 进行了尝试,Visual Studio 单元测试框架实际上正在为测试应用程序创建一个临时文件夹,我在其中找到了具有正确设置的 user.config 文件。我认为在 VS 2008 上可能是一样的。 这些文件夹的路径方案是这样的:
Windows 10 路径:
C:\Users\$USER$\AppData\Local\Microsoft_Corporation\UnitTestAdapter__Running__StrongName_guid\number
Windows Vista/七路径:
C:\Users\$USER$\AppData\Local\Microsoft_Corporation\TestAppDomainNumber
Windows XP 路径:
C:\Documents and Settings\$USER$\Local Settings\Microsoft_Corporation\TestAppDomainNumber
祝你好运。
【讨论】:
非常感谢,你帮了我很多。小调整:它的.. \Local Settings\Application Data\Microsoft_Corporation\... for XP【参考方案2】:感谢您的帮助,这对找到问题有很大帮助。路径提示帮助我“了解正在发生的事情”并找到麻烦制造者。
顺便说一句,这个sn-p
config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
config.FilePath
查找存储位置很有用。
我的问题是我在 Reload() 之前调用了 Reset()。实际上,我的测试用例检查对象是否存储正确,因此它会保存并重新加载设置。我不知道 Reset() “重置并保存在磁盘上”这一事实 - 我假设它只在内存中重置。我只能调用 Reload()。
由于所有测试用例都有自己的目录,因此必须在测试用例中创建(保存)设置。
【讨论】:
这可能有助于查找 user.config 文件,但实际上并未显示用户配置。它仅显示应用程序配置。一般情况下,应用程序和用户配置文件属于不同的目录,请注意!【参考方案3】:单元测试项目只是类库。没有应用程序上下文,因此您可能会遇到问题,因为设置对象不知道将设置文件归档到哪个公司/应用程序下。
我不确定,但它可能只是在内存中创建它。
【讨论】:
由于必须执行测试方法,单元测试框架将在真实的应用程序上下文中实例化测试类。因此测试是在文件系统上的一个目录中执行的,这意味着有配置文件。 我的错误是在 Reload() 之前调用了 Reset()。我不知道 Reset() 也在同一回合中保存,我以为它只会重置内存中的值。以上是关于在C# .net中,多个客户同时写入数据会不会导致数据混乱?的主要内容,如果未能解决你的问题,请参考以下文章
c#单元测试:在单元测试中写入设置不会在user.config中保存值