无法将“LINQ Join”与其他表组合
主要问题是我收到了以下消息: 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个表一起使用,其中一个是多对多关系。该数据库与实体框架一起使用 图书作者 图书作者智力 书号整型 福法特 书 书号整型 标题字符串无法将“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
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