4

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

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

任何人都知道问题可能是什么?

4

3 回答 3

0

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

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

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

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

于 2013-01-29T19:01:19.910 回答
0

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

于 2013-01-28T22:49:31.300 回答
0
  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 查找更改。

于 2013-02-03T15:39:56.727 回答