首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC 3教程帮助数据库操作员

MVC 3教程帮助数据库操作员
EN

Stack Overflow用户
提问于 2012-04-13 18:01:01
回答 2查看 445关注 0票数 0

当我偶然发现这段代码时,我正在学习这个教程http://www.asp.net/mvc/tutorials/mvc-music-store

代码语言:javascript
复制
public ActionResult AddToCart(int id)
    {

        // Retrieve the album from the database
        var addedAlbum = storeDB.Albums
            .Single(album => album.AlbumId == id);

        // Add it to the shopping cart
        var cart = ShoppingCart.GetCart(this.HttpContext);

        cart.AddToCart(addedAlbum);

        // Go back to the main store page for more shopping
        return RedirectToAction("Index");
    }

我不明白两件事:

1) var addedAlbum = storeDB.Albums .Single(相册=> album.AlbumId == id);

这段代码在做什么?我不知道=>接线员是做什么的。另外,我想.Single是数据库的一些函数吗?

2)这个函数正在调用它自己?我看不出它是如何以这种方式把专辑添加到购物车里的。这不会导致一个函数进入一个无限循环吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-13 18:18:51

似乎有很多核心C#你还不太熟悉。

=>操作符是lambda操作符,它是编写内联函数的简洁方式。

Single函数是一个可拓法,在本例中是对数据库的调用。此方法利用称为表达树的整洁特性将强类型的C#比较转换为相应的C#代码。它的工作原理是一个相当高级的话题,所以现在只考虑它的“魔法”。

AddToCart对象的cart方法与代码当前所在的AddToCart控制器操作方法不同。我没有这方面的链接,因为这是相当基本的面向对象编程。

我假设cart.AddToCart实际上会更新数据库。

还阅读LINQ,以更好地理解。这很可能是Linq到Sql或LINQ实体使用实体框架。

票数 2
EN

Stack Overflow用户

发布于 2012-04-13 18:08:51

此操作将传递一个相册的ID,然后可以通过storeDB.Albums.Single()调用从数据库中检索该ID。( lambda的意思是“查找数据库中的条目,其中AlbumId列中的值与传递给控制器的ID匹配”)。把.Single看作是以下的LINQ传真:

代码语言:javascript
复制
SELECT TOP(1) *
FROM   Albums
WHERE  Albums.AlbumId = <id>

然后,它抓取用户的购物车,并将获取的相册对象添加到购物车中。

然后重定向到索引,它可以列出购物车中的所有条目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10145924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档