Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将“LINQ Join”与其他表组合_Linq_Linq To Sql - Fatal编程技术网

无法将“LINQ Join”与其他表组合

无法将“LINQ Join”与其他表组合,linq,linq-to-sql,Linq,Linq To Sql,主要问题是我收到了以下消息: base{System.SystemException}={无法创建“BokButik1.Models.Book Author”类型的常量值。在此上下文中仅支持“Int32、String和Guid”等基本类型。} 基于此LinQ代码: IBookRepository myIBookRepository=新建图书存储库; var allBooks=myIBookRepository.HamtaAllaBocker IBok_for FattareRepository

主要问题是我收到了以下消息:

base{System.SystemException}={无法创建“BokButik1.Models.Book Author”类型的常量值。在此上下文中仅支持“Int32、String和Guid”等基本类型。}

基于此LinQ代码:

IBookRepository myIBookRepository=新建图书存储库; var allBooks=myIBookRepository.HamtaAllaBocker

IBok_for FattareRepository myIBok_for FattareRepository=新的Bok_for FattareRepository; var图书作者= myIBok_for FattareRepository.HamtaAllaBok_for Fattarenumer

变量q= 来自所有书籍中的booknn 在booknn上的Book Authors中加入Book Authornn。BookID等于 Book-Authornn.BookID 选择新建{bookn.title,Book AuthorID}

我应该如何解决这个问题以获取包含属性title和Book AuthorID的类实例

//全金属男孩

我还尝试使用allbooks关系和地址中的代码示例制作一些虚拟。不幸的是,仍然存在同样的问题

由于实体框架,我还考虑了Int32。不幸的是,还是同样的问题

将数据库与3个表一起使用,其中一个是多对多关系。该数据库与实体框架一起使用

图书作者 图书作者智力 书号整型 福法特

书 书号整型 标题字符串
etc etc

您似乎正在使用两个独立的linq-to-sql存储库来连接。这行不通。联接只能在单个存储库中定义的表之间工作

然而,如果您乐于将所有数据放入内存中,那么代码就很容易工作。试试这个:

var myIBookRepository = new BookRepository();
var myIBok_ForfattareRepository = new Bok_ForfattareRepository();

var allBooks =
    myIBookRepository.HamtaAllaBocker().ToArray();

var Book_Authors =
    myIBok_ForfattareRepository.HamtaAllaBok_ForfattareNummer().ToArray();

var q =
    from booknn in allBooks
    join Book_Authornn in Book_Authors
        on booknn.BookID equals Book_Authornn.BookID
    select new { booknn.title, Book_AuthorID = Book_Authornn.Book_Author };
注意包含了两个.ToArray调用

我不得不修正你们中的一些变量名,我对获得作者ID做了一些猜测

这对你有用吗

我建议只使用一个存储库,并允许正常连接——将所有对象加载到内存中可能会很昂贵


如果你正在制作自定义存储库,你也要考虑制作一个自定义方法,将标题和作者ID作为一个定义类返回而不是匿名类。有助于提高可测试性。

您真的要使用名为Book Author的变量或属性吗?你知道你不能在标识符中使用-对吗?它被解释为减法运算符。塞尔坎:我已经用明确的答案更正了我的信息。对于所有人:如果有任何信息丢失,请通知我。非常感谢您的帮助!在我采纳了你的建议之后,还有更多的问题。若你们仍然热衷于解决问题,你们可以去//Fullmetalboy