Как получить доступ к базе данных в lightwitch в другом классе? - PullRequest
3 голосов
/ 07 декабря 2011


Я просто не знаю, как объяснить это ясно. Итак, я создаю простой шаблон изображения того, что я сделал.
У меня вопрос, как я смогу получить доступ к своей базе данных в другом классе в LS?
Я искал в сети, но я не нашел никакого решения. Я надеюсь, я найду это здесь.
Спасибо!. enter image description here


Любое предложение уже оценено.

Ответы [ 2 ]

4 голосов
/ 08 декабря 2011

Спасибо за ответ, Брайан, но я нашел ответ по моей проблеме здесь Ричард Уодделл


Вот что я сделал для достижения своей цели.

  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() в любом месте проекта.
Спасибо!

1 голос
/ 08 декабря 2011

Основным отличием является первый набор кода, который работает внутри экрана. Для вашего класса Authenticate вам необходимо выполнить следующие шаги для доступа к базе данных.

Примечание: Я предполагаю, что ваш источник данных имеет имя по умолчанию ApplicationData, поскольку вы скрыли имя, если нет, внесите соответствующие изменения. Если это совершенно другой источник данных, измените «_IntrinsicData» в шагах ниже)

Эти шаги взяты с справочного сайта Lightswitch

  1. Перейдите к ..ServerGenerated \ GeneratedArtifacts (в проекте LightSwitch) и щелкните ApplicationData.cs и Добавить как ссылку.

  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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...