当前位置:  开发笔记 > 编程语言 > 正文

Linq To Sql多次加入表

如何解决《LinqToSql多次加入表》经验,为你挑选了1个好方法。

我是一个有点经验的Rails开发人员,我想我会试用ASP.NET的MVC版本.这样做我还决定尝试Linq-> Sql ...

我对Linq-> Sql处理连接的方式感到有点困惑.

我的架构的一个简单例子是:

书籍:
id
标题

类别:
id
名称

books_categories:
book_id
category_id

只需将这些表拖到.dbml文件中就好了.我在Book class books_categories上获得了一个属性,我期望的是一个属性,我可以迭代并直接获得Category类.

现在我必须做一些感觉非常错误的事情

        foreach (books_categories bc in book.books_categories)
        {
            category_names.Add(bc.Category.category.Trim());
        }

[回复接受的答案]
我勉强接受了"编写自己的胶水代码"的答案.在继续我对Linq-> Sql的研究之后,我发现它显然正在慢慢放弃(更强大的IMO)实体框架.EF仍允许使用LINQ进行查询,并且可以很好地找出像Ruby的ActiveRecord这样的关系.



1> tvanfosson..:

使用Book的部分类实现,并为类别及其属性添加适当的方法.将属性作为Books_Categories属性的前端(您可以使其具有私有可见性,以通过您的Categories属性强制实现).

public partial class Books
{
    public IEnumerable 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 );
    }
}

显然,你需要添加一些错误/边界检查等,但你明白了.

我会告诉你这不是理想的,但至少你可以灵活地确定它是如何工作的.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有