我正在启动一个新的Web应用程序。它将托管在为SQL Server收取额外费用的服务上,坦率地说,我认为该网站不需要那么多的数据库。现在数据模型是5个表。如果最大的表有10k记录,我会感到惊讶。
所以我想保持db轻量级。 SQLite 最初引起了我的兴趣,因为我需要为Android学习它。但缺少外键让我感到畏缩。当然可以实现看起来像外键约束的东西,但它只是感觉不关系。 Firebird 似乎是唯一支持FK的轻量级(和免费)数据库。
另外,我真的很想通过这个项目在LINQ中沾沾自喜。到目前为止,我只发现dbLINQ允许我使用SQLite或Firebird和LINQ。它目前在v0.18,所以它远离黄金时段。我已经使用dbLinq运行SQLite的测试,并且它们会传递我需要的内容。
还有另外一个LINQ for SQLite的实现,但是我找到的所有链接都以404s结束。
那么对于与LINQ兼容的轻量级数据库,我有哪些选择? SQL Server的任何紧凑版本都没有,除非有一个可以部署的XCOPY 没有安装代理/服务?我不能要求主持人安装新软件,因为我怀疑他们会这样做,我希望该应用程序具有高度可移植性(关于托管)。
到目前为止的清单:
更新:我试用了所有版本和wrote up my impressions here 。简短版本:SQLite获胜。它是唯一具有良好GUI,无安装足迹且免费的。
答案 0 :(得分:4)
您可以在现有数据库上使用LINQ to SQL,只要您可以创建标准IDbConnection
对象。
以下是在Firebird DB上使用LINQ的一些代码。
DbProviderFactory dbProvider = DbProviderFactories
.GetFactory("FirebirdSql.Data.FirebirdClient");
DbConnection connection = dbProvider.CreateConnection();
connection.ConnectionString = "some connection string";
DataContext linqContext = new DataContext(connection);
var query = from something in linqContext.GetTable<SomeType>()
select something.someproperty;
答案 1 :(得分:3)
SQL Server Compact Edition(http://en.wikipedia.org/wiki/SQLCE)支持LINQ和所有其他VS工具,内置于VS 2008中,支持FK,并且可以使用平面文件为数据库部署XCOPY。但是要注意,它也不是没有它的警告,很多事情如视图或嵌套查询都会失败,如果你开始使数据库大小相当大(即50MB +),它会非常臃肿。
如果您在此处使用SQLite .NET提供程序(http://sqlite.phxsoftware.com/),SQLite也 更好,也可以使用LINQ,并且具有基本的VS支持。
答案 2 :(得分:3)
我建议你看一下VistaDB。与{SQLCE和SQLite相比,它支持视图,存储过程和触发器的额外好处是exactly what you're looking。事实上,它支持在TSQL和.NET中编写过程和触发器,因此您可以利用SQL Server和.NET知识。
答案 3 :(得分:3)
SQLite的。有一个很好的GUI(自动freakin完成不少),没有安装足迹,是免费的,无论我在哪里托管网站都将工作。我知道我正在回答我自己的问题,但没有其他人只在他们的回复中提出SQLite。
重要:如果要在共享主机上运行,SQLite将需要使用完全信任模式的Web主机。
答案 4 :(得分:2)
SQL Server Express
答案 5 :(得分:2)
如果您要在共享主机上运行您的网站(几乎所有这些都不允许您在完全信任模式下运行您的网站)以及您需要启用简单的x-copy部署网站,VistaDB是唯一的选择。< / p>