Tag: 数据库

50GB HttpRuntime.Cache持久性可能吗?

我们有一个ASP.NET 4.0应用程序,它从数据库中提取一个复杂的数据结构,需要12个多小时才能进入内存数据结构(后来存储在HttpRuntime.Cache中)。 数据结构的大小正在迅速增加,如果应用程序重新启动,我们无法继续等待12个多小时才能将其存入内存。 如果要更改web.config或Web应用程序中导致重新启动的任何代码,这是一个主要问题 – 这意味着在使用应用程序之前需要等待很长时间,并阻碍开发或更新部署。 数据结构必须在内存中以使网站可用的速度工作。 在内存数据库中,例如memcache或Redis,与HttpRuntime.Cache相比速度较慢,并且在我们的情况下不起作用(在内存中db必须序列化put / get,加上它们不能互相引用,它们使用的是查找键 – 降低性能,加上大量密钥,性能迅速下降)。 性能是必须的。 我们想要做的是在应用程序结束之前(重启时)快速将HttpRuntime.Cache转储到磁盘,并且能够在应用程序再次启动时立即将其加载回来(希望在几分钟内而不是12小时或几天) 。 内存结构大约为50GB。 这个问题有方法解决吗?

如何将XML文件转换为数据库?

我最近下载了SO数据转储,并想知道如何将它从XML转换为我可以在我的.NET应用程序中使用的数据库。

从数据库生成POCO / DTO的工具(SQL Server)

哪些免费工具可以从MS SQL Server数据库生成简单的POCO / DTO类? 使用属性和字段,但仅此而已 。

在Visual Studio 2005中使用Crystal Reports(C#.NET Windows应用程序)

我需要在C#.NET Windows应用程序中创建报告。 我有一个SQL Server 2005数据库,Visual Studio 2005,并且可以很好地创建存储过程和数据集。 有人可以指出我正确的方向来创建报告吗? 我似乎无法解决这个问题。 一些例子将是一个良好的开端,或一个简单的操作指南…任何真正比MSDN文档更好的解释。 我正在使用CrystalDecisions.Windows.Forms.CrystalReportViewer控件来显示报告,我认为这是正确的。 如果我即将踏上漫长而复杂的旅程,那么创建和显示可以打印的报告的最简单方法是什么?

Entity Framework 5.0 PostgreSQL(Npgsql)默认连接工厂

我试图让EF 5.0代码首先使用PostgreSQL(Npgsql提供程序)。 我通过NuGet安装了Npgsql 2.0.12.1(但引用的程序集是2.0.12.0)。 我在app.config中声明了Npgsql(默认连接工厂和提供者工厂): 我有以下测试成功运行: [Test] public void DatabaseConnection_DatabaseFactoryTest() { var factory = DbProviderFactories.GetFactory(“Npgsql”); var conn = factory.CreateConnection(); conn.ConnectionString = _connectionString; var npg = (NpgsqlConnection)conn; var result = TestConnectionHelper(npg); // scalar select version(), nothing particular Assert.AreEqual(result, “PostgreSQL 9.2.2, compiled by Visual C++ build 1600, 64-bit”); } 这意味着至少数据库实例正在运行且提供程序已成功配置。 现在我想要的是使用从DbContextinheritance的自定义数据库上下文,它将绑定到同一个提供程序并通过连接字符串初始化: public class InventoryContext : DbContext { […]

查看包含* lot *列的表的最佳方法?

冒着被降级的风险,我想问一下,使用C#,从很多列中查看表中数据的最佳机制(最好对于此处固有的实践违规显然是主观的)。 很多,我的意思是1000。 现在,在你点击所有点击开心之前,或者抛出一些回答,比如“你为什么会有一张包含那么多列的桌子”,让我说它实际上是设计要求的一部分。 我们正在从1000个数据点尽快收集数据。 我们需要尽可能快地存储这些,因此平台。 数据需要直接从SQL Server访问,因此数据库(我们使用带有table-direct的SQL Compact)。 所以,让我们暂时忘记我们所学到的关于正确数据库设计,规范化规则等的所有内容,并且只关注我有一个包含1000列的表的事实,并且我希望能够显示数据屏幕以validation数据实际进入那里。 我试过一个数据网格。 它呕吐因为(毫不奇怪)它不是为处理那么多列而设计的。 我试过在Studio中使用查看器。 它在256之后呕吐,加上最终用户无论如何都不会安装Studio。 目前,结果不一定非常好,它不需要是可更新的,也不需要对数据更改敏感 – 只是在给定时间点表中数据的静态快照。 相关(或半相关)信息: 表有1000列(在点击之前阅读上面的内容) 使用SQL Compact版本3.5 在桌面上运行 寻找托管代码的答案

entity framework代码首先使用现有数据库迁移策略

我有以下情况,无法确定正确的迁移策略。 帮助很感激。 应用程序创建并使用数据库作为数据存储 如果需要,应用程序需要在启动时更新数据库 使用Nuget Manager控制台不是一个选项。 (出于迁移目的,本地没问题) 我在分发中的现有数据库不是EF 现在我想开始使用EF代码的第一种方法。 我需要实现的是: 如果没有数据库则创建一个 如果数据库存在,则使用空迁移(只是为下一次升级做好准备) 这应该在应用程序启动时发生 数据库不存在====>创建EF初始=====> Upg v1 =====> Upg V2 数据库存在=====>跳过初始但准备下次升级=====> Upg v1 ======> Upg v2 谢谢你的帮助 附加信息:这是存在的数据库(仅作为示例): CREATE DATABASE Test GO Use Test GO CREATE SCHEMA [TestSchema] AUTHORIZATION [dbo] GO CREATE TABLE [TestSchema].[Table1]( [Id] [uniqueidentifier] NOT NULL, [Column1] [nvarchar](500) NOT NULL, [Column2] [bit] NOT NULL, […]

NHibernate会话管理?

首先,让我简要介绍一下这个场景。 我正在编写一个简单的游戏,其中几乎所有工作都在服务器端完成,并且有一个瘦客户端供玩家访问。 玩家登录或创建帐户,然后可以通过在网格中移动来与游戏交互。 当他们进入一个小区时,他们应该被告知该小区中的其他玩家,同样地,该小区中的其他玩家将被告知该玩家进入该小区。 可以进行许多其他交互和操作,但是不值得详细介绍它们,因为它更加相同。 当玩家退出然后重新登录或者如果服务器停机并重新启动,则所有游戏状态都应该持续存在,但是如果服务器崩溃,那么如果我失去10分钟左右的更改则无关紧要。 我已经决定使用NHibernate和一个SQLite数据库了,所以我在NHibernate上阅读了很多内容,按照教程和编写了一些示例应用程序,我对如何应对这个问题感到非常困惑! 我的问题是:管理会话的最佳方式是什么? 只是从我理解的少量,所有这些可能性跳出来对我: 拥有一个始终打开的会话,所有客户端都使用该会话 为每个连接并定期刷新它的客户端设置一个会话 每次我必须使用任何持久化实体时打开一个会话,并在更新,插入,删除或查询完成后立即关闭它 为每个客户端建立一个会话,但保持断开状态,只有在需要使用它时才重新连接 与上面相同,但保持连接状态,并在一段时间不活动后才断开连接 保持实体分离,并且每隔10分钟仅附加一次,例如,提交更改 我可以使用什么样的策略来获得不错的性能,因为每秒可能有数百个客户端可能会有很多更新,插入,删除和查询,而且它们都必须相互一致? 另一个小问题:我应该如何以有效的方式使用交易? 是否可以将每一次更改都放在自己的事务中,或者当我有数百个客户端都在尝试更改网格中的单元格时,这种情况会不会很糟糕? 我是否应该尝试弄清楚如何将类似的更新批量放在一起并将它们放在一个单独的事务中,还是会变得太复杂? 我甚至需要大部分交易吗?

T-SQL:手动锁定表几分钟

我知道这会很奇怪,但我想在我的MVC应用程序中触发错误,这个错误将基于LINQ查询,我希望从表中获取一条记录。 虽然此记录将使用T-SQL命令(例如无限循环始终更新此记录)被阻止(数据库/表/行)级别,但我的LINQ查询将执行查询以读取该记录。 当LINQ尝试然后结果应该在20-30秒后超时,有人曾经尝试过这个吗?

如何在MySQL数据库中插入数据?

我有一个ASP.NET应用程序和一个MySQL数据库。 我想编写一个类来插入,删除和显示数据库中的数据。 我有一个数据库连接,但我无法在数据库中插入数据。 我的类插入方法: public string CreateEntry(string Connectionstring, string mitarbeiter) { connection = new MySqlConnection(Connectionstring); try { var command = connection.CreateCommand(); command.CommandText = “INSERT INTO tb_mitarbeiter (Vorname) VALUES (‘tom’)”; connection.Open(); return “Mitarbeiter wurde angelegt”; } catch (Exception ex) { return ex.Message; } finally { connection.Close(); } } Connectionstring是正确的。 我没有收到错误,但数据库中没有数据。 我的tablename:tb_mitarbeiter列:ID和Vorname