ほとんどの場合、クラスは事前にわかっています(例:顧客、注文)。それらは、ビジュアルデザイナー、コード内の属性、または構成ファイルを使用して、ORM(Entity Framework、LINQ to SQL、NHibernate、BLToolkitなど)用に記述されています。たとえば、Customerクラスのオブジェクトを使用する必要がある場合は、次のような強い型のクエリを記述できます。
db.Customers
.Where(c => c.FirstName == "John")
.Select(c => new { c.Id, c.LastName })
.GroupBy(c => c.Id)
ただし、私のアプリケーションでは、入力データは実行時にユーザーが定義するモデルに処理されます。ユーザーはプロパティを追加および削除できるため、コードでモデルを定義できません。これには文字列SQLクエリを手動で生成する必要があるという考えは私を怖がらせます。次のようなコードを記述できるようにしたいと思います。
db.Tables["Customers"]
.Where("c.FirstName = :FirstName")
.Select(new[] { "c.Id", "c.LastName" })
.GroupBy("c.Id")
.Param(":FirstName", "John")
(構文を発明した例です。)
質問:最初にコードでモデルを定義せずに複雑なSQLクエリを構築するのに役立つ.NET用のライブラリはありますか?
PS .NET用ではなく、このようなライブラリが存在するように見えます。SQLAlchemy、Ruby on Rails ActiveRecord、PHP Yii ActiveRecord、Djangoモデルなどが見たいです。