我一直在思考很多次,现在我们有LINQ和其他特定于CLR语言的内置搜索,分类和其他功能,集合和对象,为什么不具有“ SQL Server”或更确切地说为“ CLR Server” (不仅OOP服务器,而且 CLR 3.5)将是一个CLR(或COM)DLL,它可以公开允许用户在其上进行linq的数据;这将节省大部分的Cuncrency痛苦,以两种不同的语言发展的时间等等。我并不是说(上帝禁止)扔掉SQL,它只是很多次,我想让我们听听社区的意思。

当然,这个想法并不是全新的,在FoxPro中有这样的想法(与我的想法不同)。但是我谈论的是一个纯Clr .NET 3.5+ dB,它将允许外部访问DLL,甚至不应生成SQL查询,整个系统的工作方式也有所不同。

插入更新和删除应该还有其他LINQ关键字,但它们都应该是“ Linq样式”。

我100%确定微软在此之前就一直在考虑这一点,也许他们有表现考虑因素,让我听到您的意见,我个人认为,今天使用.NET 3.5-4.0,如果我们有收集的处理,扩展方法等。在服务器将所有数据视为对象的服务器中,它可能真的很酷(关于编码,再也没有性能如何)。

你说什么?我希望这个问题是在正确的位置提出的,请事先接受我的道歉,如果不属于这里,请评论,我将删除它。

抱歉,这个糟糕的例子,但请明白:

Module Module1

    Sub Main()
        ClrServer.MyDataBase.ObjectContext.MyTables.Add(New ClrServer.MyDataBase.MyTable)
        Try
            ClrServer.MyDataBase.SaveChanges()
        Catch e As ClrServer.UpdateException
        End Try

        Dim x = From a In ClrServer.MyDataBase.ObjectContext.MyTables Where a IsNot Nothing
        Dim y = From a In ClrServer.MyDataBase.ObjectContext.MyOtherTables Where a IsNot Nothing
        Dim z = From a In ClrServer.MyDataBase.ObjectContext.MyFreakingTables Where a IsNot Nothing

        'So far no access to server made, the local maintainer hold up the request
        'Connection to server is going to be made in the next line
        'and previous 3 queries will be loaded then.
        ClrServer.MyDataBase.ObjectContext.Execute()
    End Sub

End Module

'This is server side code, there should be internal ways to connect to real data when executing.
Namespace ClrServer
    Namespace MyDataBase
        Public Class MyTable

        End Class


        Module ObjectContext
            Public MyTables As List(Of MyTable)
            Public Sub SaveChanges()

            End Sub
        End Module
    End Namespace
End Namespace

然后,我们可以导入名称空间并使用ObjectContext内联。请不要说“不好的代码”,因为这是不良的代码,我只在stackoverflow Wysiwyg编辑器中写了一个可怜的伪示例,只是为了让您了解我的意思。

有帮助吗?

解决方案

您正在描述一个对象数据库。这是一个:

DB4O C#数据库

  • 原产于.NET 2和3.5(包括紧凑型框架)
  • 100%面向对象的数据库,没有对象缔合映射
  • 专为在零用环境中的嵌入式使用而设计
  • 开源并在GPL下免费

http://www.db4o.com/s/csharpdb.aspx

其他提示

让我猜想,您是开发人员:)

您只看到数据库的“ SQL”小气赛。但是语言和程序性部分只是数据库的前门。真正定义高端rdbms的是“ ities”:

  • 高可用性
  • 灾难可恢复性
  • 可伸缩性

该数据库最好为这些故事提供一个故事,或者它无法在SQL Server主要竞争的“关键任务”市场中竞争(即MSSQL-DB2-Oracle Triumvirate Market)。顺便说一句,您确实将这个问题标记为SQL服务器,因此我可以回答此问题,而不是解决更一般的“ RDBMS vs. OODB”路径。

现在,您将这些高端要求从方程式中删除,然后可以快速搜索并找到一个无数的项目,这些项目对“数据库的未来”图表提出了一些要求。

这并不意味着事情没有朝那个方向发展。 SQL 2005和CLR集成破裂。在SQL 2005中,CLR是可供新应用程序使用的功能,但没有内部设备基于它。显然,没有人希望关键任务平台依靠这种新的未经测试的功能。在SQL 2008中,事情进一步发展了一些,一些系统数据类型是根据CLR运输的:地理和地理空间数据类型。

另一方面,安德斯·赫尔斯伯格(Anders Hejlsberg 如此连贯 提供新的抽象,linq。编程语言中范式的变化会在堆栈中进一步渗透到数据库中吗?我相当确定。需要时间吗?我的赌注至少是2个发行版。

会很整洁,但是在对象模型和数据存储之间具有额外的抽象层,可以进行大量优化。当您使用查询时,如果删除SQL层,SQL Server内部有很多很酷的东西,则必须重新发明它。我敢肯定有一天会发生,但不确定是否有足够的好处来证明今天这样的事情... JMHO ...

使用正确的工具来工作。

我对对象数据库没有什么都没有的,但是SQL非常非常擅长以功能性的方式表达查询,从而使它们能够验光和并行。数据需要定期进行有效执行此操作,这就是为什么我们拥有SQL Server。

实际上,我将SQL视为以有效的方式存储和搜索现象大型数据集的正确工具。您将其与优质的工具和映射结合在一起,从理论上讲,您应该以两全其美的方式最终获得最好的作用。

PS:我确实看到了与您所描述的内容的收敛性,SQL 2005已经本地支持.NET数据类型和CLR过程,因此,如果将来接受这一点,我们可以拥有对象数据库来利用SQL Server的出色基础。

LINQ到SQL是一个O/RM(对象关系映射)实现,它在.NET框架中发货,它允许您使用.NET类建模关系数据库。然后,您可以使用LINQ查询数据库,并从中查询/插入/删除数据。

http://weblogs.asp.net/scottgu/archive/2007/05/19/ususe-linq-to-sql-part-1.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top