亚音速3内联

时间:2009-08-17 21:24:40

标签: subsonic3

我不知道该如何解决这个问题。我希望将两个表的列连接在一起,这样我就可以显示一个与外部id位于同一行的名称,而不是只返回一个外键。

我做了类似的事情,但我一直收到关于我主键的错误:

SqlQuery test = 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属性标记一个 有什么建议吗?

2 个答案:

答案 0 :(得分:0)

以下内容可为您提供所需内容:

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

您也可以使用SubSonic的Linq实现:

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

答案 1 :(得分:0)

由于某些原因,只是一直返回null。

我最终这样做了:

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列...