0

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

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

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

请帮我。先感谢您

4

3 回答 3

1

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

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

  • 在 myApplication 中引用 myApplicationLib

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

我建议研究用于此的常用设计的存储库模式。

于 2013-01-07T05:36:25.533 回答
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,...);
于 2013-01-07T05:44:26.210 回答
0

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

显然,事情可能不像前面提到的那么简单,但它会让你开始。更多信息在这里

于 2013-01-07T05:36:36.527 回答