Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net LINQ+轻量级数据库:我应该选择哪个数据库?_.net_Database_Linq_Sqlite_Firebird - Fatal编程技术网

.net LINQ+轻量级数据库:我应该选择哪个数据库?

.net LINQ+轻量级数据库:我应该选择哪个数据库?,.net,database,linq,sqlite,firebird,.net,Database,Linq,Sqlite,Firebird,我正在启动一个新的web应用程序。它将被托管在一个为SQL Server收取额外费用的服务上,坦率地说,我认为该站点不需要那么多的数据库。现在数据模型是5个表。如果有史以来最大的10公里记录,我会感到惊讶 所以我想保持db的轻量级。SQLite最初激起了我的兴趣,因为我需要为Android学习它。但是缺少外键让我畏缩。当然,可以实现一些看起来像外键约束的东西,但感觉不相关。Firebird似乎是唯一支持FKs的轻量级免费db 另外,我真的很想在这个项目中获得成功。到目前为止,我只发现允许我在LI

我正在启动一个新的web应用程序。它将被托管在一个为SQL Server收取额外费用的服务上,坦率地说,我认为该站点不需要那么多的数据库。现在数据模型是5个表。如果有史以来最大的10公里记录,我会感到惊讶

所以我想保持db的轻量级。SQLite最初激起了我的兴趣,因为我需要为Android学习它。但是缺少外键让我畏缩。当然,可以实现一些看起来像外键约束的东西,但感觉不相关。Firebird似乎是唯一支持FKs的轻量级免费db

另外,我真的很想在这个项目中获得成功。到目前为止,我只发现允许我在LINQ中使用SQLite或Firebird。它目前在v0.18,所以离黄金时间很远。我已经用dbLinq运行了SQLite的测试,它们通过了我需要的测试

还有另外一个用于SQLite的LINQ实现,但我找到的所有用于它的链接都以404s结束

那么,对于与LINQ兼容的轻量级数据库,我有哪些选择呢?SQL Server的任何精简版本都已发布,除非有一个XCOPY可部署且不安装代理/服务?我不能要求主机安装新软件,因为我怀疑他们会这么做,我希望该应用程序在主机方面具有高度的可移植性

到目前为止,名单如下:

数据库 火鸟 SQL Server Compact 维斯塔布
更新:我试用了所有版本和。简短的版本:SQLite轻而易举地获胜。这是唯一一个有良好的图形用户界面,没有安装足迹,是免费的

SQL Server Express

SQL Server Compact Edition支持LINQ和所有其他VS工具,内置于VS 2008中,支持FKs,并且可使用用于数据库的平面文件部署XCOPY。不过要注意的是,它也不是没有警告的,很多东西,如视图或嵌套查询,都会失败,如果您开始将数据库大小设置得相当大,即50MB+,它可能会变得非常臃肿


如果您在这里使用SQLite.NET提供程序,与LINQ一起工作,并且具有基本的VS支持,SQLite也会更好。

我建议您看看。它支持视图、存储过程和触发器,这比SQLCE和SQLite有更多的好处。事实上,它支持在TSQL和.NET中编写过程和触发器,因此您可以利用SQL Server和.NET知识。

您可以像在现有数据库上一样使用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;

SQLite。有一个良好的图形用户界面与自动畸形完成不少于,没有安装足迹,是免费的,将工作,无论我在哪里主持网站。我知道我在回答我自己的问题,但没有人在回答中只提到SQLite


重要提示:如果您希望在共享主机上运行SQLite,它将需要使用完全信任模式的web主机

如果您打算在共享主机上运行您的网站,VistaDB是唯一的选择。几乎所有的VistaDB都不允许您在完全信任模式下运行您的网站,并且如果您需要简单的x-copy部署启用网站。

这里也一样-它是免费的!它将被托管在一个为SQLServer额外收费的服务上。它可能是一家网络酒店,而不是deddi/colo。SQL Server Express在列表中,但它是有条件的;我正在看的主机有一些环需要跳过才能运行。不,很确定这个不会工作,因为它需要安装。我希望能够在不与技术支持人员交谈的情况下打开和关闭服务器上的数据库,考虑到问题的参数,我认为这是合理的。我想他可能是想说Sql server compact.SQLite支持视图和触发器。Sp并不重要,因为我将使用LINQ。VistaDB非常昂贵,在共享主机环境中,它总共使用SQL Server将近3年。@jcollum:但VistaDB是100%托管代码,因此它可以真正用于任何共享的webhosting软件包。SQLite需要完全信任。3年共享SQL Server rental=您什么都不拥有,可以存储总共250MB的数据库吗?考虑到单个SQL Server安装成本>750美元,VistaDB是便宜的。租用SQL Server意味着您什么也得不到。有趣的是,我来试一试。您将如何生成查询Firebird数据库所需的.dbml元数据?SQLite需要完全信任,因为它是非托管代码。出于安全原因,共享网络主机通常只提供中等信任。您可以将您的网站传输到完全信任服务器,但共享同一服务器的其他客户端可以看到您的脚本和数据库。我被告知,我的应用程序的目标主机确实允许完全信任。我必须研究一下,但是谢谢你提出来。这里有一个折扣的相关链接sp.net:SQLite现在支持FKs:这是很好的信息,谢谢Alix。