Lightswitch:为什么LS在创建新项后调用[Query(IsDefault=true)]方法



我有一个问题:

当我创建我的自定义域服务(使用第三方web服务)时,我使用参数化CRUD方法,除了创建一个新记录外,一切都正常。Lightswitch将此域服务添加为数据源,并能够创建用于添加新记录的屏幕。当我在生成的应用程序中单击"保存"按钮时,它正确地调用了域服务上的Create方法,记录由远程web服务正确地创建,程序将在域服务上保留Create方法。但突然间,lightswitch调用了默认的查询方法,该方法是非参数化的,在我的情况下返回IEnumerable。

Lightswitch似乎正在尝试重新读取尚未创建的记录以显示它。但它没有使用正确的ReadOne方法,该方法是由Lightswitch正确准备、创建甚至识别的,因为它能够在其他详细屏幕上调用它。

Lightswitch为什么要调用[Query(IsDefault=true)]方法?

感谢您的任何提示

Gusta Vomacka

LightSwitch要求您有一个不带参数的默认方法的原因是,它像"数据库表"一样威胁WCF RIA服务,并且每当它试图在"表中"显示信息时,它都会调用此方法。如果你有一个过滤器,它也会尝试过滤数据(例如,为了获得第一页,它会在调用中添加".skip(1).Take(10)")。

您的答案可能是在此实例中不使用WCF RIA服务。

使用此方法:

http://blogs.msdn.com/b/bethmassi/archive/2012/01/30/calling-web-services-to-validate-data-in-visual-studio-lightswitch.aspx

最新更新