【问题标题】:ASP.NET Dynamic Data with Entity Framework: Many to Many insert difference on server带有实体框架的 ASP.NET 动态数据:多对多在服务器上插入差异
【发布时间】:2012-09-21 15:54:22
【问题描述】:

我创建了一个简单的 ASP.NET 动态数据应用程序,它在我的开发机器上运行良好。当我部署它时,除了与其他表具有多对多关系的项目的插入页面外,一切正常。编辑页面很好,多对多复选框出现。服务器安装了.NET 4.0

我按照这里的说明进行操作:http://go.microsoft.com/fwlink/?LinkId=257395

有人知道问题可能是什么吗?

【问题讨论】:

  • 嗨,Stefan 我也遇到了同样的问题,您找到解决方案了吗?谢谢!蒂姆
  • " 工作正常,除了插入页面具有多对多的项目" "不起作用"是什么意思?数据库模式是否完全相同?请尝试将其中一个数据库重新创建为另一个数据库的副本或使用同步工具。
  • 确实,有关它如何“不起作用”的更多信息会有所帮助。
  • 自从我发布这个问题已经很长时间了,所以我不是 100% 确定,但我认为没有工作的是多对多复选框出现在编辑中模式,但不是插入模式。数据库是一样的。

标签: asp.net entity-framework asp.net-dynamic-data


【解决方案1】:

我不是 100% 确定,但我认为 System.Web.DynamicData.dll 和 System.Web.DynamicData.Design.dll 的版本在我的开发机器和服务器上是不同的,所以你可能想加倍检查一下。 我还记得我必须为所有关系表设置主键,但这可能是一个单独的问题...... 当我找到解决方案时,这将教会我回答自己的问题......

【讨论】:

    【解决方案2】:

    @TimS:如果您可以添加有关您的情况的任何其他信息可能会有所帮助 - 这是否也适用于一种环境而不是另一种环境?您知道两种环境中所有已安装组件的版本吗?

    如果我正确理解了这个问题,我会看的前两个地方是:

    1. 假设您有某种从表单到实体/模型的自动映射,您是否需要在加载“插入”页面之前使用默认值初始化实体或模型?

    2. 您的数据库在两种设置中是否也相同 - 定义了相同的键(我假设代码相同...)

    【讨论】:

      【解决方案3】:
      1. 确保多对多表的主键由两个相关表的主键组成。

      2. 确保表格在 EDMX 中显示为表格而不是视图(尤其是在您使用 DB-first 并且必须修复第 1 点时)。

      3. 如果您使用的是 POCO,请确保关系属性(和其他属性)是公共的或受保护的并且是虚拟的。

      4. 如果您使用的是 POCO,请确保在更改时修复关系的另一端(POCO-T4 中的默认设置)。

      5. 如果您使用两个实体设置关系,例如a 和 b

        使用:
        a.Bs.Add(b);

        如果 a 被创建为代理,例如
        a = context.As.CreateObject();

        而不是:
        a = new A();

        它将让 EF 更容易识别更改。

        另外,如果您使用 ObjectContext,您可以致电
        context.SaveChanges(SaveOptions.DetectChangesBeforeSave | SaveOptions.AcceptAllChangesAfterSave);
        帮助 EF 找到更改。

        李>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        • 2018-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多