1

我是 Silverlight 和 CSLA 的新手,我需要一个示例项目。我有 Lhotka 2008 年关于 CSLA 的书,以及它附带的 Silverlight 电子书 + 示例项目。

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

注意:如果我将 CSLA 排除在等式之外,只使用 Linq to SQL 或实体框架和 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 dll)。在 MyProject 上,我添加了 .Client 项目的引用,在 MyProject.Web 上,我添加了对 .Server 项目的引用。

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

    MyMobileObjItemList.GetAllAsync(HandleReturnedArgs);

回调方法 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。真的很糟糕的网站)。或者
  2. 有人可以解释我做错了什么吗?
4

1 回答 1

0

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

有关更多信息,请参阅此论坛讨论

于 2012-05-16T23:30:58.550 回答