2つの異なるテーブルの2つの異なる列に対して「Where」句を実行する必要があるが、サブソニックで問題の原因となっている両方に対して同じパラメータ化されたパラメータ名が作成されます。これをどうすれば解決できますか?Subsonic:同じ列名の異なるテーブル
string _RawSql = new Select()
.From(Tables.Table1)
.InnerJoin(Tables.Table2)
.InnerJoin(Table3.SidColumn, Table2.Table3SidColumn)
.Where(Table1.SidColumn).IsEqualTo(2)
.And(Table3.SidColumn).IsEqualTo(1)
.BuildSqlStatement();
これが作成されるクエリは、最後の2行に、そのは表1と表3の両方に@Sidを使用して、その
SELECT ....
FROM [dbo].[Table1]
INNER JOIN [dbo].[Table2] ON [dbo].[Table1].[Table2Sid] = [dbo].[Table2].[Sid]
INNER JOIN [dbo].[Table3] ON [dbo].[Table2].[Table3Sid] = [dbo].[Table3].[Sid]
WHERE [dbo].[Table1].[Sid] = @Sid
AND [dbo].[Table3].[Sid] = @Sid
注あります。どのようにして@ Sid0と@ Sid1を使うようにするのですか?
ご協力いただければ幸いです。ありがとう
私は本当に感謝しています。私は2.1を使用しています 私はすでにTableColumnを使用しています。以下は、SQLプロファイラで
WHERE [dbo].[Table1].[Sid] = @Sid
AND [dbo].[Table3].[Sid] = @Sid
を見たときは、次のSQLを作成します
.Where(Table1.SidColumn).IsEqualTo(2)
.And(Table3.SidColumn).IsEqualTo(1)
はあなたが私はあなたが示唆されている方法でこれらの行を置き換えることができますどのように私を示してもらえ... C#の亜音速コードです?私は本当にむしろリテラル "Table2.Sid = 2"を使用しないでください
ranmore、問題は変数または定数で同じです。
私も
.Where("Table1.Sid").IsEqualTo(2)
.And("Table3.Sid").IsEqualTo(1)
を試してみましたが、これは
WHERE Table1.Sid = @Table1.Sid0
AND Table3.Sid = @Table3.Sid1
私は最終的にこのケースで異なるパラメータ化VARSを得るが、それは好きではないので、今SQL Serverは文句のようにクエリを作成します。パラメータ化されたvar名で
2つの異なるテーブルのwhere句を使用して結合を実行する方法がわかりません!
@Robも役に立たない。ここで私の質問を参照してください:http://stackoverflow.com/questions/1061851/column-with-same-name-in-multiple-tables-causing-problem-in-subsonic -select – TheVillageIdiot