c# - Silverlight talking to a WCF using RIA Services Silverlight Client -
my silverlight project has references ria services silverlight client , .web application has access riaservices.server.
i can't seem find tutorial learn how connect these. once understand how data numbergenerator method. can pick there. have 3 questions need with.
first, setting project correctly? never done project ria before.
secondly reference need use servicecontract(), faultcontract, , operationcontract? examples show in system.servicemodel library. in case using external library ria services silverlight client not case. throws error saying missing reference. other libraries have 3 in it?
my last question uri use in systemdomaincontext? found code @ used myfirstriaapplication-web-employeedomainservice.svc in case don't have has .svc extension. use .xap or .aspx?
here silverlight code
here numbergenerator silverlight usercontrol page code
public partial class numbergenerator : usercontrol { public numbergenerator() { initializecomponent(); generatenumber(); } private void generatebutton_click(object sender, routedeventargs e) { generatenumber(); } private void generatenumber() { int result = 0 systemclientservices systemclientservices = systemclientservices.instance; result = systemclientservices.generatenumber(); numberlabel.content = result; } }
here system client services class
private readonly static systemclientservices _instance = new systemclientservices(); private systemdomaincontext _domaincontext = new systemdomaincontext(); private systemclientservices() { } public static systemclientservices instance { { return _instance; } } public int generatenumber() { //code goes here information domainservices loadoperation load = this._domaincontext.load(this._domaincontext.getnumbergeneratorquery(), loadbehavior.keepcurrent, false); return convert.toint32(load.entities); }
here numbergenerator class on silverlight local project
public sealed partial class numbergenerator : entity { private static readonly numbergenerator _instance = new numbergenerator(); public int numbergenerated { get; set; } public numbergenerator() { numbergenerated = 0; } public static numbergenerator instance { { return _instance; } } }
here system domain conext class on silverlight local project
using system; using system.collections.generic; using system.componentmodel; using system.componentmodel.dataannotations; using system.linq; using system.runtime.serialization; using system.servicemodel.domainservices; using system.servicemodel.domainservices.client; using system.servicemodel.domainservices.client.applicationservices; using system.servicemodel.web; using system.servicemodel; public sealed partial class systemdomainconext : domaincontext { #region extensibility method definitions /// <summary> /// method invoked constructor once initialization complete , /// can used further object setup. /// </summary> partial void oncreated(); #endregion /// <summary> /// initializes new instance of <see cref="employeedomaincontext"/> class. /// </summary> public systemdomainconext() : this(new webdomainclient<isystemdomainservicecontract>(new uri("myfirstriaapplication-web-employeedomainservice.svc", urikind.relative))) { } /// <summary> /// initializes new instance of <see cref="employeedomaincontext"/> class specified service uri. /// </summary> /// <param name="serviceuri">the employeedomainservice service uri.</param> public systemdomainconext(uri serviceuri) : this(new webdomainclient<isystemdomainservicecontract>(serviceuri)) { } /// <summary> /// initializes new instance of <see cref="employeedomaincontext"/> class specified <paramref name="domainclient"/>. /// </summary> /// <param name="domainclient">the domainclient instance use domaincontext.</param> public systemdomainconext(domainclient domainclient) : base(domainclient) { this.oncreated(); } /// <summary> /// gets set of <see cref="employee"/> entity instances have been loaded <see cref="employeedomaincontext"/> instance. /// </summary> public entityset<numbergenerator> generatednumber { { return base.entitycontainer.getentityset<numbergenerator>(); } } /// <summary> /// gets entityquery instance can used load <see cref="employee"/> entity instances using 'getemployee' query. /// </summary> /// <returns>an entityquery can loaded retrieve <see cref="employee"/> entity instances.</returns> public entityquery<numbergenerator> getnumbergeneratorquery() { this.validatemethod("getgeneratednumber", null); return base.createquery<numbergenerator>("getnumbergenerator", null, false, true); } /// <summary> /// creates new entitycontainer domaincontext's entitysets. /// </summary> /// <returns>a new container instance.</returns> protected override entitycontainer createentitycontainer() { return new numbergeneratordomaincontextentitycontainer(); } /// <summary> /// service contract 'employeedomainservice' domainservice. /// </summary> [servicecontract()] public interface isystemdomainservicecontract { /// <summary> /// asynchronously invokes 'getemployee' operation. /// </summary> /// <param name="callback">callback invoke on completion.</param> /// <param name="asyncstate">optional state object.</param> /// <returns>an iasyncresult can used monitor request.</returns> [faultcontract(typeof(domainservicefault), action="http://tempuri.org/employeedomainservice/getemployeedomainservicefault", name="domainservicefault", namespace="domainservices")] [operationcontract(asyncpattern=true, action="http://tempuri.org/employeedomainservice/getemployee", replyaction="http://tempuri.org/employeedomainservice/getemployeeresponse")] [webget()] iasyncresult getgeneratednumber(asynccallback callback, object asyncstate); /// <summary> /// completes asynchronous operation begun 'begingetemployee'. /// </summary> /// <param name="result">the iasyncresult returned 'begingetemployee'.</param> /// <returns>the 'queryresult' returned 'getemployee' operation.</returns> queryresult<numbergenerator> endgetgeneratednumber(iasyncresult result); /// <summary> /// asynchronously invokes 'submitchanges' operation. /// </summary> /// <param name="changeset">the change-set submit.</param> /// <param name="callback">callback invoke on completion.</param> /// <param name="asyncstate">optional state object.</param> /// <returns>an iasyncresult can used monitor request.</returns> [faultcontract(typeof(domainservicefault), action="http://tempuri.org/employeedomainservice/submitchangesdomainservicefault", name="domainservicefault", namespace="domainservices")] [operationcontract(asyncpattern=true, action="http://tempuri.org/employeedomainservice/submitchanges", replyaction="http://tempuri.org/employeedomainservice/submitchangesresponse")] iasyncresult beginsubmitchanges(ienumerable<changesetentry> changeset, asynccallback callback, object asyncstate); /// <summary> /// completes asynchronous operation begun 'beginsubmitchanges'. /// </summary> /// <param name="result">the iasyncresult returned 'beginsubmitchanges'.</param> /// <returns>the collection of change-set entry elements returned 'submitchanges'.</returns> ienumerable<changesetentry> endsubmitchanges(iasyncresult result); } internal sealed class numbergeneratordomaincontextentitycontainer : entitycontainer { public numbergeneratordomaincontextentitycontainer() { this.createentityset<numbergenerator>(entitysetoperations.edit); } } }
here system domain services class on silverlight.web
[enableclientaccess()] public class systemdomainservices : domainservice { private numbergenerator numbergenerator = numbergenerator.instance; public int numbergenerate() { return numbergenerator.numbergenerated; } }
here numbergenerator class on silverlight.web
private static readonly numbergenerator _instance = new numbergenerator(); [key] public int numbergenerated { get; set; } public numbergenerator() { numbergenerated = generatenumber(); } public static numbergenerator instance { { return _instance; } } public int generatenumber() { string db_date = ""; int db_num = 0; string todaysdate = ""; int temp_num = db_num; int result = 0; using (sqlconnection connection = new sqlconnection(dbconnectionstring)) { connection.open(); using (sqlcommand command = new sqlcommand("select * table", connection)) { using (sqldatareader reader = command.executereader()) { while (reader.read()) { db_date = reader.getstring(0); db_num = (int)(reader.getsqlint32(1)); todaysdate = datetime.now.tostring("ymmdd"); temp_num = db_num; } reader.close(); } if (todaysdate != db_date) { using (sqlcommand dateupate = new sqlcommand("update table set tsdate='" + todaysdate + "' tsdate='" + db_date + "'", connection)) { dateupate.executenonquery(); } db_num = 0; db_date = todaysdate; } db_num++; using (sqlcommand numupate = new sqlcommand("update table set tsnum='" + db_num + "' tsnum='" + temp_num + "'", connection)) { numupate.executenonquery(); } result = convert.toint32(db_date + db_num.tostring().padleft(3, '0')); connection.close(); connection.dispose(); } return result; } }
the answer question 2 might have go tools @ top, nuget package manager, package management console, , type following command install package 3 functions. pm> install-package riaservices.silverlight.domaindatasource
Comments
Post a Comment