Due to security reason, Silverlight is not allowed to talk to database directly. There are multiple ways of doing this, here I only listed 3 ways for an silverlight gadget or application to talk to database...
- RESTful API
- Invoke javascript function from silverlight, then use whatever way you prefer to interactive with database
- Using .net web service template, silverlight-enabled webservice.
This post will be focusing on the last 2 solutions...
Using javascript, one can make a javascript call from silverlight easily by adding below line in code behind event handler, callWebService is the javascript function.
protected void btnSubmit(object sender,EventArgs e)
{
System.Windows.Browser.HtmlPage.Window.Invoke("callWebService", null);
}
Please refer to my previous post about how to call web service from javascript...
http://mypath2us.com/post/2009/10/10/javascript-interactive-with-webservice-via-JSON.aspx
Using Silverlight-Enabled Webservice
1, Create a Silverlight-Enabled Webservice by choosing the template, and put the database and other server-related logic in the service
2, Add a reference to that service from your silverlight application.
3, Call the webservice from your silverlight application like below...
using MySilver.MyService;
......
.....
private void btnSend_Click(object sender, RoutedEventArgs e)
{
if (!String.IsNullOrEmpty(txtMessage.Text.Trim()))
{
lstHisotryMessage.Items.Add("Gene: " + txtMessage.Text.Trim());
GeneMessage message = new GeneMessage();
message.Body = txtMessage.Text.Trim();
MyServiceclient = new MyService();
client.SendMessageCompleted += new EventHandler<SendMessageCompletedEventArgs>(client_SendMessageCompleted);
client.SendMessageAsync(message);
}
else
{
MessageBox.Show("You cannot send empty message!");
}
}
protected void client_SendMessageCompleted(object sender, SendMessageCompletedEventArgs e)
{
txtMessage.Text = e.Result.MessageID.ToString();
}