如何配置Silverlight + CSLA数据门户?

时间:2012-05-14 19:41:39

标签: c# .net silverlight mvvm-light csla

我是Silverlight和CSLA的新手,我需要让一个示例项目正常工作。我收到了Lhotka 2008年关于CSLA的书籍,以及它随附的Silverlight电子书+示例项目。

我认为创建一个Silverlight 5 MVVM Light项目相当简单,该项目通过数据门户(数据门户/通道适配器配置为使用WCF)获取CSLA 4.3对象但无法从中获取CSLA对象服务器

注意:如果我将CSLA排除在等式之外并且只使用Linq to SQL或Entity Framework以及WCF RIA服务调用我可以从服务器获取对象并在silverlight中显示它们就好了,但是因为我无法使用在这个项目中我必须让CSLA工作。

我的步骤:

  1. 创建Silverlight业务应用程序 - 获取MyProject(SL)和MyProject.Web(WCF)
  2. 为.Web项目添加了服务

    <%@ ServiceHost Service =“Csla.Server.Hosts.Silverlight.WcfPortal”%>

  3. 在SL项目的App.xaml Application_Startup方法中引用了服务

    Csla.DataPortalClient.WcfProxy.DefaultUrl =“http:// localhost:14790 / Services / MyTestCslaSilverlightWcfService.svc”;

  4. 添加了一个简单的CSLA业务层项目(MyProject.CSLA),其中包含一组测试对象(MyMobileObjItem.cs,MyMobileObjItemList.cs)

  5. 又添加了两个项目(MyProject.CSLA.Client和MyProject.CSLA.Server)。 .Client项目是一个Silverlight类库,.Server是一个类库。然后我链接了所有我的CSLA对象(添加现有引用,添加为链接)以及所有必需的引用(csla / csla silverlight dlls)。在MyProject上我添加了一个引用.Client项目和MyProject.Web上我添加了对.Server项目的引用。

  6. 现在我应该有一个工作项目,并希望从服务器获取一个项目或一个项目列表。在构造函数的主ViewModel中,我尝试了两种不同的东西。当我使用

    MyMobileObjItemList.GetAllAsync(HandleReturnedArgs);

  7. 回调方法EventArgs有一个错误“System.IO.FileNotFoundException:无法加载文件或程序集”MyProject.CSLA.Client“。我发现这很奇怪,因为Silverlight应用程序引用了这个项目和MyProject。 Web不应该使用.Client引用,因为它具有.Server引用。

    当我使用

    DataPortal<MyMobileObjItemList> dp = new DataPortal<MyMobileObjItemList>();
    dp.FetchCompleted += HandleReturnedArgs;
    dp.BeginFetch();
    

    回调方法EventArgs有一个错误“System.InvalidOperationException:无法加载对象类型或程序集(MyProject.CSLA.MyMobileObjItemList,MyProject.CSLA.Client”。

    我不确定这些错误发生在哪里(在客户端或服务器上?)因为它是Csla.DataPortalException我认为这是服务器错误。

    我不知道怎么做一个简单的电话,或者这是正确的做事方式,因为我能找到的所有例子都没有这样做,对我来说似乎不清楚。

    我知道要合并很多部分,可能很难简洁地给出答案,但我真的很感激帮助(代码,链接下载示例等)。

    问题:

    1. 是否有一个简单的Silverlight MVVM Light项目示例,它调用一个抓取对象的远程数据门户以及如何使其工作/如何将所有部分组合在一起的文档?我再次使用电子书Silverlight项目,但是它使用了bxf和大多数数据门户引用,本书刚刚说要看数据门户上的另一本电子书(我没有 - 我会买它,但网站需要一个几天允许访问pdf。真的很差的网站)。 OR
    2. 有人可以解释我做错了吗?

1 个答案:

答案 0 :(得分:0)

要修复错误错误,我将.Client和.Server项目的程序集和默认名称空间更改为与.CSLA项目完全匹配(在项目属性中设置)

有关详细信息,请参阅this forum discussion