2011-04-28 3 views
2

실버 라이트 4 앱이 있습니다. ASP.NET 웹 응용 프로그램을 호스팅합니다. 활성화 된 WCF RIA 서비스. 아파버 사이드 apach2 php5 mysql에서. MySql 커넥터, ADO.NET 엔터티 데이터 모델, 도메인 서비스 클래스를 사용하면 MySql 데이터베이스에 액세스 할 수 있습니다. 잘 작동해라. (천천히 나를 위해, 그러나 일한다).C# silverlight wcf 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>(); 

결과를 목록에 저장하고 목록 항목 색인 (languages.DEFAULT == "Y")을 저장하는 방법이 있습니까? 목록이 없으면 xaml 또는 코드에서 정의 된 Language_Choice.SelectedIndex = 0; (오류 = 범위를 벗어남)을 모르겠습니다.

저는 "개발자"입니다. 코드 SELECT와 같은 코드를 작성합니까? "SELECT fild1, fild2 FROM table WHERE field_900 ="HELP "..." "정의 된 테이블의 모든 필드가 결과로 나타나지 않습니다. 환경 (WCF RIA 서비스와 # 실버, Apach, PHP, MySQL의 C)

전달합니다 감사합니다

답변

1

내가 "대답"...

는 ASP.NET 웹 응용 프로그램 프로젝트에 추가 한 방법을 찾을 : 새로운 "실버 라이트 가능 WCF 서비스". 다음 코드 쓰기 :

[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의에서 conecction를 만들 :
실버 라이트 클라이언트 프로젝트에서 <connectionStrings> <add name="MyConnection" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;User Id=root;password=***;database=****;Persist Security Info=True"/> </connectionStrings>

는 "서비스 참조"를 추가합니다.

 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}"