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 嵌入式数据库的主要内容,如果未能解决你的问题,请参考以下文章
Firebird 是适用于 ASP.NET 的良好嵌入式数据库吗?还有哪个?
嵌入式 Mysql (libmysql.dll) 和 C# & Asp.Net