概念类型中的成员数量不匹配 - 但确实如此

The number of members in the conceptual type does not match - yet it does

我突然开始在 .NET 4 MVC 项目中收到以下错误。

The number of members in the conceptual type 'OrnaviModel.Task' does not match with the number of members on the object side type 'Ornavi.Core.Objects.Task'. Make sure the number of members are the same.

项目使用EDMX文件,用于生成所需的数据对象。该项目上周运行良好,但现在每当我向任何实体添加新字段时都会收到此错误。删除新的 属性 会立即修复错误。

该字段也已添加到基础数据库 table,因此不应该存在不匹配。

为什么我的文件突然停止正确生成?我试过 "Run Custom Tool",但没有用。我在单独的 PC 上试过,没有任何乐趣。如果我以 XML 模式打开 EDMX 文件,我可以看到新的 属性 在那里,同样,如果我浏览到生成的 class,属性 在那里。

请帮忙..这让我发疯!

编辑:我还没有得到答案,所以我要 post 一些截图看看是否有帮助:

我修改了任务table,如下:

然后单击 "Generate Database From Model" 刷新基础对象。如果我展开 DataModel.edmx 文件,并浏览到相关的 class,我可以看到新字段:

我也已将列添加到数据库中,但每次访问该页面时:

The number of members in the conceptual type 'OrnaviModel.Task' does not match with the number of members on the object side type 'Ornavi.Core.Objects.Task'. Make sure the number of members are the same.

为什么会出现这种情况?

我试过以下方法: - 运行 edmx 上的自定义工具 - 在不同的计算机上进行更改 - 尝试了不同的tables、列、变量类型

膝上型电脑上没有任何变化 - visual studio 的相同版本,未安装任何更新。

每次都是同样的问题。如果我删除该列,单击 "Generate Database From Model",它就可以正常工作。重新添加进去,同样的问题。

请帮忙!这个项目的数据库结构很大,所以我真的不想重新创建整个东西!

请注意, 错误意味着生成的 类 表示您的模型与您的模型定义 xml 不同步。

使用以下方法之一:

  • 尝试重新生成它们(通过在 EF 中移动一些东西 设计器或右键单击 edmx 文件并选择 运行 自定义 工具)。
  • 打开您的模型 XML。从中删除对该类型的所有引用 CSDL。保存并关闭,然后在 GUI 中重新打开。现在你应该可以 像往常一样更新模型。如果这不起作用,请执行相同的操作, 但也从 MSL 中删除。

谢谢@Gert 现在我明白了 model-first 方法。

So I think issue is mapping of table datatype and your entity datatype try and set datatype as bit in the database

如果不能,请尝试从模型生成数据库,将 table 中测试列的数据类型设置为 BIT

据我了解你的问题,可以简单解释一下

The new column exists in the database table, but it does not currently exist in the data model class. You must update the model to include your new column. In the Models folder, open the ContosoModel.edmx file to display the model diagram. Notice that the Student model does not contain the MiddleName property. Right-click anywhere on the design surface, and select Update Model from Database.

您可以在 EF Database First with ASP.NET MVC: Changing the Database 找到更多详细信息。

希望对您有所帮助。

据我了解,您正在使用 Model-First 方法。

我想分享一个我在 .NET 4 MVC 项目中遇到的历史问题 -> 我的是数据库优先方法,每当我们在 DB table 中添加新列时,我们都会遇到类似的问题当我们刷新模型时。

我的感觉是,同样的错误也存在于您的模型优先方法中。

在我们的例子中,我们确实通过完成删除 .edmx 模型然后重新生成它来解决它。 (在 DB-first 中很容易做到)。

但是,对于您的情况,我想建议一些故障排除方法 ->

  1. 尝试在您的完整解决方案中搜索一些其他已经存在的属性,如“CreatedById”,看看它存在多少地方。
  2. 现在搜索您的新“Test”属性 并匹配是否缺少某处。
  3. 如果您发现它在某个地方遗漏了它,请尝试在该文件中手动添加它,然后 re-compile 您的解决方案。

如果这行得通,那么正如我已经说过的,更新模型<-->DB 更改有点错误。

可能是您在不同的项目中有两个版本的模型,例如类似问题的评论中提到的解决方案:

Number of members in conceptual type does not match with number of members on object side type

我只是在我的电脑上更改了我的日期时间。没问题。问题是:我最近从备份中恢复了数据库,然后我在 Tablet 中添加了一些列并使用模块。在我新修复的 Table 中遗漏了 Etisiting 音乐会模型专栏。我从备份中恢复了正确的数据库,它对我有用!