c # silverlight wcf mysql - PullRequest
       2

c # silverlight wcf mysql

2 голосов
/ 28 апреля 2011

У меня есть приложение silverlight 4.хост ASP.NET веб-приложение.включены службы WCF RIA.С другой стороны apach2 php5 Mysql.С соединителем MySql, ADO.NET Entity Data Model, классом Domain Service у меня есть доступ к базе данных MySql.Работает нормально ... (у меня медленно, но РАБОТАЕТ).

таблица:

languages
        LANG_ID char(10)
        LANG_NAME char(40)
        LANG_NAME_SHORT char(10)
        LANG_IMAGE blob
        LANG_PATH char(100)
        DEFAULT char(1)
        STATUS_ID char(1)

xaml:

    <ComboBox x:Name="Language_Choice" Height="25" Width="110">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <Image Source="{Binding LANG_PATH}" Width="16" Height="16"></Image>
                    <TextBlock Text="{Binding LANG_NAME_SHORT}" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

Код:

        DataDomainContext _context = new DataDomainContext();
        EntityQuery<languages> _query = from _l in _context.GetLanguagesQuery()
                                        where _l.STATUS_ID == "Y"
                                        orderby _l.LANG_NAME_SHORT
                                        select _l;
        LoadOperation<languages> _loadOp = _context.Load(_query);
        Language_Choice.ItemsSource = _loadOp.Entities;

Вопрос: Я хочу, чтобы результат запроса был помещен в список:

public class LangChoice
{
    public string LangID { get; set; }
    public string LangName { get; set; }
    public byte LangImg { get; set; }
    public string LangPath { get; set; }
    public string LangDef { get; set; }
}     List<LangChoice> LangList = new List<LangChoice>();

Есть ли способ поместить результат в список и сохранить индекс элемента списка там, где языки.DEFAULT == "Y".Без списка я не знаю, определен Language_Choice.SelectedIndex = 0; (ошибка = вне диапазона) в xaml или коде.

Я новый "разработчик". Я пишу универсальный код SELECT, например: "SELECT fild1, fild2 FROM table WHERE field_900 =" HELP "..." Я не приведу все поля из таблицы, только определенные.Среда (c # Silverlight, Apach, PHP, MySql со службами RIA WCF)

Вперед Спасибо

1 Ответ

1 голос
/ 04 мая 2011

Я нахожу один способ «ответа» ...

Добавить в проект веб-приложения ASP.NET: новая «Служба WCF с поддержкой Silverlight».Введите следующий код:

    [OperationContract]
    public List<Languages> LanguageList(string query)
    {
        string nwConn = System.Configuration.ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
        var langList = new List<Languages>();
        using (MySqlConnection conn = new MySqlConnection(nwConn))
        {
            conn.Open();
            using (MySqlCommand cmd = new MySqlCommand(query, conn))
            {
                MySqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                if (dr != null)
                    while (dr.Read())
                    {
                        var lang = new Languages
                        {
                            LangID = dr.GetString(0),
                            LangName = " " + dr.GetString(1),
                            LangPath = dr.GetString(2),
                            LangDef = dr.GetString(3)
                        };
                        langList.Add(lang);
                    }
                return langList;
            }
        }
    }

[DataContract]
public class Languages
{
    [DataMember]
    public string LangID;
    [DataMember]
    public string LangName;
    [DataMember]
    public string LangPath;
    [DataMember]
    public string LangDef;
}

В файле web.config создайте условие:
<connectionStrings> <add name="MyConnection" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;User Id=root;password=***;database=****;Persist Security Info=True"/> </connectionStrings>

В клиентском проекте Silverlight: добавьте «Справочник по услугам».

Теперь код некоторые думают как:

        string query = @"SELECT `LANG_ID`, `LANG_NAME_SHORT`, `LANG_PATH`, 
                        `DEFAULT` FROM `languages` WHERE `STATUS_ID` = 'Y' ORDER BY `LANG_NAME_SHORT`";
        DataToListServiceClient proxy = new DataToListServiceClient();
        proxy.LanguageListCompleted += new EventHandler<LanguageListCompletedEventArgs>(proxy_LanguageListCompleted);
        proxy.LanguageListAsync(query);



    void proxy_LanguageListCompleted(object sender, LanguageListCompletedEventArgs e)
    {
        System.Collections.ObjectModel.ObservableCollection<Languages> _list = e.Result;
        Language_Choice.ItemsSource = _list;
        int i = 0; for (i = 0; i < _list.Count; i++) { if (_list[i].LangDef == "Y") break; }
        Language_Choice.SelectedIndex = i;
    }

Изменить XAML:

Source="{Binding LangPath}"  &  Text="{Binding LangName}"  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...