2009-08-17 11 views
0

私はこれについてどうやって行くのか分かりません。私は2つのテーブルの列を一緒に結合して、外部キーを戻す代わりに、外部IDと同じ行にある名前を表示できるようにしています。亜音速3 InnerJoin

私はこのような何かをしたが、私は私の主キーについてのエラー取得保管:。

のSQLQueryテスト= db.Select.From()InnerJoin(filesTable.file_typeColumn、filetypesTable.filetype_idColumn).Where(filesTableを。 file_typeColumn).IsEqualTo(filetypesTable.filetype_idColumn);

「Key」と呼ばれるプロパティを作成することはできません。「ID」という名前のアイテムを作成するか、SubSonicPrimaryKey属性でマークすることができます。 説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこで発生したのかについては、スタックトレースを参照してください。

例外の詳細:System.InvalidOperationException:Keyを考慮するプロパティを決定できません - 「ID」という名前を作成するか、SubSonicPrimaryKey属性を使用してマークすることができます 提案はありますか?

答えて

0

次は何をしたいあなたを取得する必要があります:

SqlQuery test = db.Select() 
    .From<filesTable>() 
    .InnerJoin<filetypesTable>() 

ます。また、この亜音速のLINQの実装を使用して行うことができます:ちょうどヌルを返す保持何らかの理由で

var fileIdsAndTypeds = from files in filesTable.All() 
    join types in filesTypes.All() 
    on types.filetype_idColumn equals files.filetypeColumn 
    select files; 
+0

私はそれを設定してもらえないか分かりません.Schemaをファイルに追加することができないため、テーブル –

+0

2つの引数を取るメソッドSelectのオーバーロードはないと言います。これまでSelectColumnsで試してみましたが、それは私たちをどこにでも持ち込むようには見えませんでした。 –

+0

申し訳ありません私はSubSonic 2スタイルを使用していました。更新されたバージョンのクエリが機能するはずです。 –

0

を。

私はこれをやってしまった:

DBDB db = new DBDB(); 
     SqlQuery Files = db.SelectColumns(filetypesTable.filetype_idColumn, filetypesTable.filetype_nameColumn, 
      filesTable.purpose_idColumn, filesTable.page_idColumn, filesTable.file_idColumn, filesTable.file_descriptionColumn, 
      filesTable.file_nameColumn, filesTable.file_pathColumn, filesTable.file_typeColumn, filesTable.file_dateColumn) 
       .From<file>() 
       .InnerJoin<filetype>(filesTable.file_typeColumn, filetypesTable.filetype_idColumn); 

List<file> fileList = Files.ExecuteTypedList<file>(); 

最初のテーブルの上に実際の列のリストを返すように思えるし、そのコレクションの内部で結合されたテーブルからデータを別のものです...今すぐDataBindとカスタムのGridviewの列で作業する方法を理解するために...

+0

技術的にはリストタイプの問題に陥るのは、それが2つのタイプで、ファイルだけではないからです。 これを回避する方法は私が理解できる唯一の方法でした。 var fileList = Files.ExecuteReader(); 問題は、ライブ読み込みであるため、ページングを実行できないことです。 –