Ef code first Microsoft Lightswitch与实体框架代码优先不一致

Ef code first Microsoft Lightswitch与实体框架代码优先不一致,ef-code-first,visual-studio-lightswitch,Ef Code First,Visual Studio Lightswitch,我已经开始研究Microsoft Lightswitch 2011,将其作为一种可能的解决方案,用于开发用于更新各种数据库的快速“管理”应用程序——主要是那些包含内部公司网站或应用程序的查找表或配置数据的应用程序 我有一个使用ASP.NETMVC开发的网站。EF代码首先用于构建数据层。一些关系是多对多的,EF CF通过创建一个联接表来处理这些关系,联接表中只有两个字段包含关系中涉及的两个表的主键。联接表的主键是这两个字段的组合。例如,一个文档实体可以有许多类别,而一个类别可以由许多文档组成。创建

我已经开始研究Microsoft Lightswitch 2011,将其作为一种可能的解决方案,用于开发用于更新各种数据库的快速“管理”应用程序——主要是那些包含内部公司网站或应用程序的查找表或配置数据的应用程序

我有一个使用ASP.NETMVC开发的网站。EF代码首先用于构建数据层。一些关系是多对多的,EF CF通过创建一个联接表来处理这些关系,联接表中只有两个字段包含关系中涉及的两个表的主键。联接表的主键是这两个字段的组合。例如,一个文档实体可以有许多类别,而一个类别可以由许多文档组成。创建三个表:文档、类别和文档类别。DocumentCategories只有两列:DocumentID和CategoryID

当此数据库作为外部数据库连接到Lightswitch,并且为Documents表(并显示相关类别)创建主详细信息屏幕时,可以从相关表(联接表)中删除数据并将其添加到相关表中,但不能修改数据

调查显示,Lightswitch要求多对多关系中的联接表具有自己的主键,而主键不是相关表的键的串联。换句话说,表格的格式必须为:DocumentCategoryID、DocumentID、CategoryID。如果联接表是这样构造的,则可以更新相关表中的条目

我知道我可以通过不更新记录,简单地删除和重新添加记录来解决这个问题。这没什么大不了的,因为1)Lightswitch让这变得很容易,2)相关数据通常不会进行大规模更改。这违背了我对“什么是对的”的感觉

因此,冒着为所有微软工具憎恨者提供素材的风险,1)这只是微软犯了一个错误并且不一致的例子,还是有其他力量在起作用,2)有没有一种方法可以“修复”这个问题,而不必修改我的ASP.NET MVC、EF CF应用程序和更改数据库结构?

1)LightSwitch工作正常。是的,有“憎恨者”,但当钉子枪出现时,也有憎恨者()为我们的服务付费的最终用户会要求我们使用可以将成本降低90%以上的工具


2) 使用WCF RIA服务,您可以在数据层和LightSwitch之间放置一个层(请参阅:)仅在“数据源向导”适用于您时使用。如果它给您带来了任何问题,那么WCF RIA服务(只需您5分钟即可编写代码)将解决任何情况,因为您可以使用过程代码来处理所需的任何转换。

我认为使用WCF RIA服务的建议可能是解决这一问题的方法,但我不必这样做。一致性注释背后的我的观点是,EF CF应该生成一个具有自己主键元素的联接表(而不是它现在生成的复合键),或者Lightswitch应该使用复合键“开箱即用”。我知道这是两种不同的产品,有不同的开发时间表和不同的开发团队,但这似乎是一件基本的事情,我希望它能更无缝地工作这有点像我说的,当我的宝马在2档时可以达到同样的速度时,我不应该把我的爱车挂在3档。我希望不要迷路的是你可以让LightSwitch做你想做的事。。。只是并不总是你想要的方式:)我并不反对它可以做我想要的事情的观点,但我想要更多:)如果微软在不同产品之间应用一些一致性,Lightswitch作为RAD工具的承诺可能会实现得更多。在这种特殊情况下,我怀疑连接表在EF CF和Lightswitch之间必须具有不同架构的根本技术原因。存在差异的事实导致我不得不做更多的工作(即时间),而不是做其他事情。LightSwitch团队过去曾表示,这是他们可以做的事情,但优先级不够高(当存在替代方案时,事情的优先级低于无替代方案的事情的优先级)。