我是一个有经验的Rails开发人员,我以为我会尝试ASP.NET的MVC版本.在这样做的时候,我也决定试试
Linq-> sql …
我对Linq-> sql处理连接的方式感到有些困惑.
我的模式的一个简单的例子是:
图书:
ID
标题
类别:
ID
名称
books_categories:
book_id
CATEGORY_ID
只需将这些表拖动到.dbml文件就好像不行.我在Book类book_categories上获得一个属性,我期望的是一个可以迭代并直接获取Category类的属性.
现在我必须做一些非常错误的事情
foreach (books_categories bc in book.books_categories) { category_names.Add(bc.Category.category.Trim()); }
[回应接受答复]
我勉强接受“写你自己的胶水代码”的答案.在继续研究Linq-> sql之后,我发现显然缓慢地放弃了(更为强大的IMO)实体框架. EF仍然允许一个人使用LINQ查询,并做出一个体面的工作,找出像Ruby的ActiveRecord之类的关系.
解决方法
使用Book的部分类实现,并为类别及其属性添加适当的方法.具有属性前端的Books_Categories属性(您可以使其具有私有的可见性,以强制实现通过您的Categories属性).
public partial class Books { public IEnumerable<string> CategoryNames { get { return this.Books_Categories .Select( bc => bc.Category.category.Trim() ); } } public void AddCategory( Category category ) { this.Books_Categories.Add( new Book_Category { Category = category,Book = this } ); } public void RemoveCategory( Category category ) { var bc = this.Book_Categories .Where( c => c.Category == category ) .SingleOrDefault(); this.Books_Categories.Remove( bc ); } }
显然,你需要添加一些错误/边界检查等,但是你会得到这个想法.
我会给你这不是理想的,但至少你有灵活性来确定它是如何工作的.