Sql server 无法基于Linq到SQL中的外键关系创建属性
表名:Sql server 无法基于Linq到SQL中的外键关系创建属性,sql-server,linq-to-sql,Sql Server,Linq To Sql,表名:Author AuthorID->主键 名字 姓氏 表名:标题 ISBN->主键 书名 编辑编号 版权所有 表名:bn ISBN->外键 AuthorID->外键 我可以做到: var AuthorsAndISBNs = from author in database.Author join books in database.AuthorISBN on author.AuthorID equals
Author
- AuthorID->主键
- 名字
- 姓氏
标题
- ISBN->主键
- 书名
- 编辑编号
- 版权所有
bn
- ISBN->外键
- AuthorID->外键
var AuthorsAndISBNs =
from author in database.Author
join books in database.AuthorISBN
on author.AuthorID equals books.AuthorID
orderby author.LastName, author.FirstName
select new { author.FirstName, author.LastName, books.ISBN };
但是,我不能:
var authorsAndTitles =
from title in database.Titles
from book in title.AuthorISBN
let author = book.Author
orderby author.LastName, author.FirstName, title.BookTitle
select new { author.FirstName, author.LastName, title.BookTitle };
我认为LINQ会根据外键关系自动创建属性,这使您能够轻松访问其他表中的相关行:(
作者与作者之间存在一对多关系,而作者与标题之间存在“多对一”关系
请帮助!这几天一直困扰着您:'(谢谢!为了让LINQ允许您访问其他表中的相关行,每个表都必须有一个PrimaryID。问题是'AuthorizationBN'表没有PrimaryID,因此没有创建属性:)您能发布域对象(标题、作者和AuthorizationBN)吗?你是手工编写这些类还是使用工具生成它们?重复的-你只是在5小时前问了同样的问题-请不要反复发布同样的问题!@Chasemedallion不,我不是手工编写类。我已经在mySQL中开发了表,并在c#中添加了与我的程序的连接,以及使用对象关系映射(omr)将它们拖放到名为Books.dbml的dbml文件中。此方法自动创建一个BookDataContext对象以连接到我的数据库。@marc#s好的,我不会再次发布它。我只是对此感到非常失望如果查询#1有效-为什么不使用相同的方法(使用
join
而不是两个独立的from
子句)进行第二次查询?