无法使用WCF Ria中Domain Service类的方法?

时间:2012-02-15 12:09:35

标签: c# sql wcf silverlight wcf-ria-services

我正在尝试构建一个silverlight应用程序,它在文本框中输入用户的名字,姓氏,通行证,电子邮件地址,然后将它们添加到数据库中。

为此,我正在使用WCF Ria Services

我遵循的步骤是:

在我的项目中(在网页部分中)添加了ADO.NET Entity Data Model然后Domain Service class

现在我的DomainService类中有一些预定义的方法,比如Insert,Update方法。我知道如何在DataGrid中显示数据,但这不是我想要的。

我想要的是定制所有这些:

当用户点击提交按钮时,应该有像AddInfo(all parameters)这样的方法,它可以将所有数据添加到我的sql server数据库{目前LocalHost}。

简单来说,通过自定义方法访问数据库,使用WCF Ria Services在sql server中添加数据

我知道在使用.net表单时非常简单。但是Silverlight& WCF ria?

请建议。

2 个答案:

答案 0 :(得分:1)

如果您的域服务上已经有Insert方法,您应该可以从客户端调用:

//add your new data to the context
MyDomainServiceContext.Entity.Add(myEntity); //(where "Entity" is your entity Type)
//send all the changes to the server
MyDomainServiceContext.SubmitChanges();

答案 1 :(得分:1)

  

简单来说,通过自定义方法访问数据库即可添加   使用WCF Ria服务的SQL Server中的数据

您应该做的是在服务器端编写自定义方法。

在服务器端,您有一个DomainService类,应该从LinqToEntitiesDomainService<TContext>继承。

只需在此类中添加Invoke属性的方法,例如:

[Invoke]
public void AddNewUser(string name, string firstName, int age)
{
    // Put logic here to add the user to the DB
}

将用户添加到数据库的逻辑非常简单,只需创建一个新的Entity,将其添加到上下文并调用context.SubmitChanges();

编译客户端RIA服务项目时,与您的DomainService对应的自动生成的代理类将包含您的新方法,您将能够使用以下方法调用它:

yourDomainContext ctx = new yourDomainContext();
ctx.AddNewUser("dsd", "ds", 42).Completed += (sender, e) =>
{
     // Called asynchronously when the job is done
};