1

我是 .net 的新手,更像是一个 Java 人,但我认为我已经掌握了窍门。直到现在,在以数据库优先方式提取实体数据模型之后,我才突然收到一些不兼容的类型错误(见下文)。我什么也没做。

重现:

  1. 我使用帐户控制器创建了一个模板 C# ASP.Net MVC4 互联网应用程序。
  2. 运行它并创建了一个测试帐户。
  3. 停止调试。
  4. 然后使用默认连接字符串通过 Project > Add new item > data > ADO.Net Entity Data Model 提取 .edmx。
  5. 然后再次尝试调试,得到如下错误:

    Error   1   Cannot implicitly convert type 'MvcApplication1.Models.UserProfile' to 'MvcApplication1.UserProfile'    <fileLocation>  268 40  MvcApplication1
    Error   2   The best overloaded method match for 'System.Data.Entity.DbSet<MvcApplication1.Models.UserProfile>.Add(MvcApplication1.Models.UserProfile)' has some invalid arguments  <fileLocation>  273 25  MvcApplication1
    Error   3   Argument 1: cannot convert from 'MvcApplication1.UserProfile' to 'MvcApplication1.Models.UserProfile'   <fileLocation>  273 45  MvcApplication1
    

我可以提供代码,但它是默认的 MS 模板代码。

我想以这种方式进行提取,因此我可以扩展默认的 MS 模型,以模型优先的方式进一步开发。

  • 怎么了?
  • 我该如何解决?
  • 还是我完全错了?(在这种情况下,如果可能的话,我仍然想修复它。)
4

1 回答 1

0

原因是 MVC4 附带了一个基于 Code First 的成员模型,您可以在 AccountModels.cs 文件中找到它。您正在尝试使用 .edmx 文件创建第二个模型,因此编译器抱怨您有两个不兼容的同名类型。

对此的解决方案是,您要么不在 .edmx 文件中添加 UserProfile,要么摆脱代码优先模型并仅使用 .edmx 模型。

于 2012-10-18T15:27:55.190 回答