【问题标题】:How to retrieve one record from SQL Server database in MVC Model如何在 MVC 模型中从 SQL Server 数据库中检索一条记录
【发布时间】:2013-08-06 17:30:07
【问题描述】:

我正在开发 Visual C# MVC 项目。我在我的模型中使用数据库优先方法。我的项目是关于开发一个用户可以购买应用程序的应用市场。我在主页中使用了局部视图,它将在不同的局部视图中包含不同应用程序的详细信息。例如第一个局部视图中的 App1,第二个局部视图中的 App2,依此类推。为此,我使用了 foreach 循环。

在每个局部视图中都有一个名为 MoreInfo 的链接,因此当用户单击该链接时,他们将进入 MoreInfo 页面。在数据库中,我有应用信息、应用成本、描述等字段,这些字段将显示在 MoreInfo 页面中。所有这些字段都在一个名为 Apps 表的表中。

我的问题是,如果我在 MoreInfo 页面中使用 forach 循环,那么我会从数据库中获取每条记录的信息。更清楚地说,在数据库中,我有两条用于描述字段的记录,分别称为“描述 1”和“描述 2”。如果我使用 foreach 循环,那么它会显示两个视图,一个用于描述 1,另一个用于同一页面中的描述 2。 我想要的是第一个 MoreInfo 页面中第一个应用程序的描述和第二个 MoreInfo 视图中的第二个描述等等。
有人可以帮我吗? 谢谢..

【问题讨论】:

    标签: c# sql-server asp.net-mvc


    【解决方案1】:

    假设您使用的是实体框架: Enumerable.FirstOrDefault 将为您执行此操作。您可以将其加载到 TSource 类型中。

    这是一个链接:http://msdn.microsoft.com/en-us/library/bb340482.aspx

    var someobj = db.someEnumerable.FirstOrDefault(x => // Condition);
    

    【讨论】:

    • 您假设 OP 正在使用 EF 或其他一些 ORM。
    • 没错,但他没有说他是如何访问数据的。编辑了答案以说明假设。感谢您指出这一点。
    • @Anon 我正在使用 EF。抱歉没有提及。我会尝试您的解决方案并通知您。
    【解决方案2】:

    如果您使用 LINQ to SQL 或 EF,您可以在调用中添加 FirstOrDefault(),这将返回第一个值或在大多数情况下返回 null(引用类型的默认值)。如果您使用 SQLConnection 之类的东西或调用存储过程,只需将您的 SELECT ... FROM 更改为 SELECT TOP 1 .... FROM

    【讨论】:

    • 谢谢伙计。我正在使用 EF。我会尝试这种方法并发布结果。
    【解决方案3】:

    您应该根据您的情况使用 Linq 获取一条记录。尝试这样的事情(这只是向您展示逻辑的代码,因为我们不确定您使用了哪些变量)。

    var result=(from x in dbContext.TableName where column==variable select x).FirstOrDefault()
    

    我希望它会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      相关资源
      最近更新 更多