C# 控制台应用程序中的存储过程

C# 控制台应用程序中的存储过程,c#,stored-procedures,console-application,C#,Stored Procedures,Console Application,我已经创建了控制台应用程序: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.Objects; namespace ConsoleApplication3 { class Program { static void Main(string[] a

我已经创建了控制台应用程序:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Objects;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            NorthwindEntities nwe = new NorthwindEntities();

        var customerOrdersDetail = nwe.CustOrdersDetail(10248);

        foreach (var ordersDetail in customerOrdersDetail)
            {
            Console.WriteLine(ordersDetail.ProductName);
            Console.WriteLine(ordersDetail.UnitPrice);
            Console.WriteLine(ordersDetail.Quantity);
            Console.WriteLine(ordersDetail.ExtendedPrice);
            Console.WriteLine(ordersDetail.Discount);
            Console.ReadLine();
            }
        }
    }
}

它显示了我在
nwe.customordersdetail()中输入ID的产品的所有详细信息,但我很感兴趣,我可以在应用程序启动时直接将ID输入到应用程序中吗?当我想显示其他产品的信息时,最好不要重新启动应用程序。

解析args数组并传递它,如下所示:

var customerOrdersDetail = nwe.CustOrdersDetail(int.Parse(args[0]));
ConsoleApplication3 10248
ConsoleApplication3 10249
ConsoleApplication3 10250
这样,您可以从命令行使用它,如下所示:

var customerOrdersDetail = nwe.CustOrdersDetail(int.Parse(args[0]));
ConsoleApplication3 10248
ConsoleApplication3 10249
ConsoleApplication3 10250

您需要隔离获取订单详细信息项目的功能,并将其放入可以重复调用的内容中,因为这只是一个控制台应用程序,类似的内容应该可以用来演示:

private static void Main(string[] args)
{
    FetchOrderDetail();
}

private static void FetchOrderDetail()
{
    string input = string.Empty;

    while (input != "exit")
    {
        Console.WriteLine("Enter order detail ID: ");
        input = Console.ReadLine();

        int orderId = 0;
        if (Int32.TryParse(input, out orderId))
        {
            var customerOrdersDetail = nwe.CustOrdersDetail(orderId);

            foreach (var ordersDetail in customerOrdersDetail)
            {
                Console.WriteLine(ordersDetail.ProductName);
                Console.WriteLine(ordersDetail.UnitPrice);
                Console.WriteLine(ordersDetail.Quantity);
                Console.WriteLine(ordersDetail.ExtendedPrice);
                Console.WriteLine(ordersDetail.Discount);
                Console.ReadLine();
            }
        }
    }
}

您可以在一个循环中写入,直到遇到(或不遇到)仅通过Console.ReadLine()接收ID的情况,或者您可以在开始时使用字符串[]args传递ID(尽管在第一个循环中“更改”ID似乎更困难)


为什么不简单地输入要运行的ID列表,并从args数组访问它们:

foreach (var input in args)
{
    Console.WriteLine(int.Parse(input));
}

可以这样称呼它:
ConsoleApplication3 10248 10249 10250

您可以在一个循环中编写,直到遇到(或不遇到)某个东西,而该东西只是通过
Console.ReadLine()
接收ID,或者您可以使用
string[]args
在开始时传递ID(尽管这似乎更难“更改”第一个上面的ID…另外,这个问题标题/标记与存储过程有什么关系?:b因为所有内容都与名为customordersdetail的存储过程相连接。我没有在开始时澄清它,我的错。