私は何度も考えていましたが、今日では、Linqやその他のCLR言語固有の組み込みの検索、並べ替え、その他の機能がテーブル、コレクション、オブジェクトに対してあるので、「SQLServer」ではなく「CLRServer」と呼んでください。 (OOPサーバーだけでなくCLR 3.5)これはCLR(またはCOM)DLLであり、データを公開して、ユーザーがそのデータを直接参照できるようにします。これにより、通貨の問題、2つの異なる言語での開発時間などの多くを節約できます。私は(神は禁じられている)SQLを捨てると言っているのではなく、それは何度も頭を悩ませているだけです。コミュニティが何を言っているのか聞いてみようと思いました。
もちろん、このアイデアは完全に新しいものではありません。FoxProにはそのような(私のアイデアとは異なる)DBがあります。しかし、私は、DLLへの外部アクセスを許可する純粋なCLR .NET 3.5+ DBについて話していますが、SQLクエリを生成することすらなく、システム全体の動作が異なるはずです。
挿入の更新と削除には追加のLinqキーワードが必要ですが、それらはすべて「Linqスタイル」である必要があります。
Microsoftは、パフォーマンスの考慮やIDKの追加が行われる前に、これについて考えていたと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をインラインで使用できます。「悪いコード」とは言わないでください。悪いコードです。私が言っていることを確認するために、StackoverflowWYSIWYGエディターで悪い疑似例を書いただけです。