我有一个简单的Lightswitch-基于Silverlight的Web客户端。 Client.csproj和Server.csproj表示LightSwitchVersionv3.0。它在


Visual Studio 2012更新4
VS11的LightSwitch扩展性工具包
我有2个扩展名,都被选中:


LightSwitch大都会外壳和主题
Microsoft LightSwitch扩展



我有一个MySQL表

CREATE TABLE `images` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `legend` varchar(200) NOT NULL,
  `preview` blob,
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;


在为表创建屏幕之前,我在数据源中将preview字段声明为图像类型。但是正在运行的应用程序对此表示欢迎



使用Lightswitch 2.0,一切运行正常。但是,由于我已经升级到v3.0,所以这是破坏所有内容的唯一问题:-(

最佳答案

我本人没有遇到这个问题,但引起了兴趣。 :)

似乎OData层正在使用blob列的内容来确保数据并发性,而URI太长了。在本机SQL Server表中,您可以仅添加一个Rowversion列,并将其选择用于并发目的-实际上,Lightswitch内部数据库会自动为您执行此操作。我的理解是MySQL没有等效的Rowversion类型。

解决方法是在MySQL表上创建另一列,该列在每次更新时均由MySQL触发器递增,从而使其成为事实上的并发字段。更新数据源,然后编辑.lsml文件以将<UseForConcurrency />属性添加到该列。

完整的讨论在https://social.msdn.microsoft.com/Forums/vstudio/en-US/44581489-438d-4844-8194-0b4a0a41e56f/exception-invalid-uri-the-uri-string-is-too-long?forum=lightswitch

10-07 16:50