如何在其他类的lightswitch中访问数据库?

时间:2011-12-07 10:30:14

标签: c# switch-statement visual-studio-lightswitch ls light


我只是不知道如何清楚地解释这一点。所以我创建了一个简单的图像模式。
我的问题是,如何在LS中的其他类中访问我的数据库?
我一直在网上搜索,但我没有找到任何解决方案。我希望我能在这里找到它。
谢谢!。 enter image description here


任何建议都已经受到赞赏。

2 个答案:

答案 0 :(得分:4)

感谢Bryan的回答,但我在Richard Waddell

找到了我的问题的答案


以下是我为实现目标所做的工作。

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

    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() 谢谢!

答案 1 :(得分:1)

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

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

这些步骤取自Lightswitch Help Website

  
      
  1. 导航到..ServerGenerated \ GeneratedArtifacts(在LightSwitch项目中),然后单击ApplicationData.cs并添加为链接。

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

  4.   
    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

访问它