使用LINQ和存储过程插入数据,同时在c#中使用两个项目

时间:2013-01-07 05:18:08

标签: c# linq stored-procedures

我的应用程序中有两个项目(层)。一个是myApplication,另一个是myApplicationLib

我拥有myApplication层中的所有表单,我正在myApplicationLib层编写业务类。现在,我想使用带存储过程的LINQ,通过myApplicationmyApplicationLib形式的值插入到SQL Server中。

如何将DataContext上的存储过程从一个层调用到另一个层?

请帮帮我。提前谢谢

3 个答案:

答案 0 :(得分:1)

为了保持数据访问/业务逻辑的抽象,myApplicationLib将包装所有数据访问(包括上下文和LINQ)并通过方法公开实体/模型/ DTO。例如,如果您有一个产品表,您需要访问并在Web表单上显示,您可以:

  • 创建一个名为GetCategoryProducts的方法,该方法返回myApplicationLib中的产品列表(您可以在此处调用存储过程和/或使用LINQ)

  • 在myApplication中引用myApplicationLib

  • 调用myApplicationLib中的GetCategoryProducts方法并显示在myApplication中的Web表单上(如果需要,您可以在返回的产品列表中使用LINQ。)

我建议查看Repository Pattern这是常用的设计。

答案 1 :(得分:0)

以下是您通常会做的事情: 1.将Application Form中的值分配给ApplicationLib对象的必需属性 2.创建LINQ实体 3.调用ExecuteMethod

显然事情可能没有提到的那么直接,但它会让你开始。 更多信息here

答案 2 :(得分:0)

您可以构建这样的方法并将其放入Datalayer或..并从您的公司中调用它。

     public bool CallSp(string command, params object[] parameters)
        {
            int i;
            string com = command + " ";
            for (i = 0; i < parameters.Count() - 1; i++)
            {
                com += string.Format("{{0}} ,", i);
            }
            com += string.Format("{{0}}", i);

            //ctx is the datacontext
            //EF5
            ctx.Database.ExecuteSqlCommand(com, parameters);
            return true;
        }

        CallSp("exec SP", p1, p2, p3,...);