来自灯开关的存储过程调用

时间:2014-05-22 07:08:09

标签: c# sql-server silverlight lightswitch-2013

我使用Lightswitch 2013(C#)而不是SQL Server来每月进行一些基本数据输入。在用户在一系列屏幕上输入数据之后,我希望他们能够在数据库上执行存储过程,这将启动一系列任务来构建SSAS多维数据集。例如。 usp_DoTasks

因此按钮被称为"过程数据"并且在EBIT屏幕上。

enter image description here

我似乎无法找到任何关于调用基本存储过程的内容,没有链接到表格插入等等。我是lightswitch的新手,这是我到目前为止构建的第一个应用程序

using System;
using System.Linq;
using System.IO;
using System.IO.IsolatedStorage;
using System.Collections.Generic;
using System.Configuration;
using Microsoft.LightSwitch;
using Microsoft.LightSwitch.Framework.Client;
using Microsoft.LightSwitch.Presentation;
using Microsoft.LightSwitch.Presentation.Extensions;

namespace LightSwitchApplication
{
    public partial class EditableEBiTByYearCountryGrid
    {
        partial void EditableEBiTByYearCountryGrid_Created()
        {
            //Set the defaults for the parameters
            SelectedYear =    this.DataWorkspace.MyData.Years_SingleOrDefault(DateTime.Today.Year);
            SelectedCountry = this.DataWorkspace.MyData.SalesCountries_SingleOrDefault(3);
        }

        partial void ProcessData_Execute()
        {
        //help???
        }

    }
}

谢谢!

2 个答案:

答案 0 :(得分:2)

你看过this博文了吗?它提供了有关如何在LightSwitch中执行存储过程的逐步说明。

答案 1 :(得分:0)

好吧,我想我会愚蠢到这一点,以便像我这样的人可以在将来做到这一点......

这是一个简单的存储过程调用,没有参数,与您正在编辑的屏幕无关。

注意:我有一个名为Year和Month的表是参考表,而不是用户维护的。没有实际数据被插入年表。

以下是“屏幕”代码中按钮执行的内容

    partial void ProcessData_Execute()
    {
        // Write your code here.
        DataWorkspace dataWorkspace = new DataWorkspace();
        Year operation = dataWorkspace.MyData.Years.AddNew();
        dataWorkspace.MyData.SaveChanges();
    }

要执行下一位,您需要添加对System.Configuration的引用。它在上面的link中描述为

  

您必须将服务器项目中的引用添加到   System.Configuration程序集以便使用ConfigurationManager   类。 (在“解决方案资源管理器”工具栏中,下拉“视图”切换   并选择“文件视图”。然后右键单击Server项目并说出来   “添加参考”。在.NET选项卡中,选择System.Configuration。)

在数据源“MyData”中,右键单击它并“查看代码”

partial void Years_Inserting(Year entity)
    {
        using (SqlConnection connection = new SqlConnection())
        {
            string connectionStringName = this.DataWorkspace.ProfitData.Details.Name;
            connection.ConnectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;

            string procedure = "usp_DoTask";
            using (SqlCommand command = new SqlCommand(procedure, connection))
            {
                command.CommandType = CommandType.StoredProcedure;
                connection.Open();
                command.ExecuteNonQuery();
            }

        }
        this.Details.DiscardChanges();
    }

嘿presto,它有效。