3


我只是不知道如何解释清楚。所以我为我所做的事情创建了一个简单的图像模式。
我的问题是,我如何才能在 LS 的其他课程中访问我的数据库?
我一直在网上搜索,但我没有找到任何解决方案。我希望我能在这里找到它。
谢谢!。 在此处输入图像描述


任何建议都已受到赞赏。

4

2 回答 2

4

感谢 Bryan 的回答,但我在这里找到了我的问题的答案Richard Waddell


这是我为实现目标所做的事情。

  1. 将您的 LS 项目切换到文件视图
  2. 转到“Common”项目,在“UserCode”文件夹下,创建一个类(例如Authenticate.cs)并放置此代码。

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.LightSwitch;
namespace LightSwitchApplication
{
    public class Authenticate
    {
        public static adminuser GetCurrentUser()
        {
            adminuser userFound = (from useritem in 
            Application.Current.CreateDataWorkspace().basecampcoreData.adminusers
            where useritem.LoginID == Application.Current.User.Name
            select useritem).SingleOrDefault();

            if (userFound != null)
                return userFound;
            else
                return null;
        }
    }
}

然后您现在可以调用Authenticate.GetCurrentUser()项目中的任何位置。
谢谢!

于 2011-12-08T06:03:47.930 回答
1

主要区别在于第一组有效的代码在屏幕内运行。对于您的 Authenticate 类,您需要执行以下步骤来访问数据库。

注意:我假设您的数据源具有默认名称 ApplicationData 因为您隐藏了名称,如果没有,请进行相应的更改。如果是完全不同的数据源,请在下面的步骤中更改“_IntrinsicData”)

这些步骤取自Lightswitch 帮助网站

  1. 导航到 ..ServerGenerated\GeneratedArtifacts(在 LightSwitch 项目中)并单击 ApplicationData.cs 和 Add As Link。

  2. 在下面添加以下代码,此代码动态创建与数据库的连接。LightSwitch 使用“_IntrinsicData”作为它的连接字符串。

    private ApplicationDataObjectContext m_context;
    public ApplicationDataObjectContext Context
    {
        get
        {
            if (this.m_context == null)
            {
                string connString =
                    System.Web.Configuration.WebConfigurationManager
                    .ConnectionStrings["_IntrinsicData"].ConnectionString;
                EntityConnectionStringBuilder builder = new EntityConnectionStringBuilder();
                builder.Metadata =
                    "res://*/ApplicationData.csdl|res://*/ApplicationData.ssdl|res://*/ApplicationData.msl";
                builder.Provider =
                    "System.Data.SqlClient";
                builder.ProviderConnectionString = connString;
                this.m_context = new ApplicationDataObjectContext(builder.ConnectionString);
            }
            return this.m_context;
        }
    } 

您应该可以通过Context.adminusers

于 2011-12-08T02:53:49.723 回答