使用RIA域服务如何在更改EF后刷新客户端生成的代码

时间:2013-12-21 07:16:12

标签: wcf silverlight entity-framework-4.1 wcf-ria-services ria

我正在使用WCV RIA服务,域服务和实体框架开发N层Silverlight 4.0解决方案。

  1. 我在DAL项目中创建了Entity Framework模型和域服务。
  2. 在创建域名服务时点击了“启用客户端代码生成”,一切正常。生成的代码在客户端应用程序中创建,因为我可以看到.g.cs文件。
  3. 我决定通过添加函数并创建复杂类型来向EF模型添加存储过程。
  4. 然后我继续将此代码添加到我的域服务(MyDomainService.cs)类中,如下所示:

    public IQueryable GetJournalItemList() {     return this.ObjectContext.ExecuteFunction(“GetJournalList”,null).AsQueryable(); }

  5. 我现在面临的问题是,当我构建我的解决方案时,我无法在Silverlight客户端应用程序中看到客户端生成的代码类(.g.cs)中的新代码。代理没有引用新的GetJournalItemList,它引用了新添加的存储过程。

    所以这是我的问题:如何强制刷新客户端生成的代码,以便显示对Domain Service类的更改?

    谢谢

1 个答案:

答案 0 :(得分:1)

您必须返回强类型结果。即。

public IQueryable<JournalItemList> GetJournalItemList() 
{ 
     return this.ObjectContext
       .ExecuteFunction("GetJournalList", null).AsQueryable(); 
}

此外,如果尚未完成此操作,则JournalItemList必须定义一个键。您可以通过自定义分部类使用Metadatatype属性执行此操作。生成域服务时,将创建.metadata.cs文件。应该有可以使用的例子。

[MetadataType(JournalItemList.Metadata)]
public partial class JournalItemList
{
    public class Metadata
    {
        // Assuming that JournalItemList.JournalItemId exists
        [Key]
        public int JournalItemId { get; set; }
    }
}