ASP.NET MVC 2 嵌入式数据库

Posted

技术标签:

【中文标题】ASP.NET MVC 2 嵌入式数据库【英文标题】:ASP.NET MVC 2 Embedded Database 【发布时间】:2010-07-10 14:52:24 【问题描述】:

我正在构建一个非常小的临时网站,需要一个小型后备商店。我在 ASP.NET MVC 2 中构建了它,并希望使用 DiscountASP 托管 - 尽管这不是必需的。

我想要一个支持 ASP.NET MVC 2、VS2010 Express、启用 LINQ(或 EF)并在共享主机上无需额外费用的后备存储。

根据我的调查,SQLCE 3.5 在 .NET 4 中不起作用 SQLCE 4,只是 CTP,在 VS2010 中不起作用 SQlite 没有任何 .NET 4.0 驱动程序。

我做对了吗?有什么好的教程或博客可以说明如何逐步完成这项工作?

谢谢, 标记

【问题讨论】:

SQLite 在 .net 4.0 上工作 您能告诉我有关使其正常工作的信息吗? 见***.com/questions/2649194/… 【参考方案1】:

SQLite does work on .Net 4.0。以下是关于 .NET 中的嵌入式数据库的其他一些非常相似的问题:

Good embedded database solution (like SQLite) for .Net Embedded database for .net Open Source Embedded Database Options for .Net Applications

【讨论】:

【参考方案2】:

我不是 ASP 专家,但您听说过 Firebird SQL 吗?具有客户端/服务器或嵌入式版本的数据库引擎,具有事务等功能,并具有 ADO.NET 提供程序

http://firebirdsql.org/dotnetfirebird/

http://firebirdsql.org/index.php?op=devel&sub=netprovider

【讨论】:

【参考方案3】:

不,甚至不要考虑使用嵌入在 ASP.NET 中的 firebird。

这是严格禁止的。

Firbird 网站上有一个参考告诉你要避免:

是否可以在我的 ASP.NET 应用程序中使用嵌入式 Firebird?

是的。但 Firebird ADO.NET 在应用程序工作目录中查找 fbembed.dll 文件。对于 ASP.NET 应用程序,工作目录是系统文件夹(例如 C:\WINDOWS\System32)。但这并非没有问题 link text

在同一网站的另一个页面上:

ASP.NET 使用一种功能来帮助防止编写不佳的 ASP.NET 应用程序阻塞整个服务器 - 它定期回收 ASP.NET 工作进程。默认情况下,IIS6 使用重叠回收,其中在旧进程停止之前启动了一个新进程,以确保运行不中断。问题是 fbembed.dll 为所有者进程独占锁定数据库,因此如果您同时运行另一个进程,则在第一个进程停止之前将无法访问数据库。您可能想接受这一点,但这确实不是最佳解决方案。

解决方案是关闭重叠回收(通过将 DisallowOverlappingRotation 元数据库属性设置为 true)。但是,这可能会导致您的应用程序在回收期间中断。

结论

不要那样做 ;-)。确实,fbembed.dll **不是为处理此类使用而构建的。你可以让它工作,但这只是一个 hack。

【讨论】:

以上是关于ASP.NET MVC 2 嵌入式数据库的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 3、Razor 视图和可移植区域

Firebird 是适用于 ASP.NET 的良好嵌入式数据库吗?还有哪个?

嵌入式 Mysql (libmysql.dll) 和 C# & Asp.Net

2.MVC框架开发(视图开发----基础语法)

asp.net mvc 分页之后Request.Form获取不到数据

怎样将EXCEL嵌入ASP.net网页中,象ASP下的VBA一样的效果,并将数据库的数据读取到EXCEL中?