0

我只是偶然发现了一个恼人的问题。我有一个 MVC 4“互联网应用程序”,它一直运行良好。我正在对 MSSQL 数据库使用简单的成员资格。

但是当我添加“ADO.NET 实体数据模型”时,页面不再加载。

我收到此错误“.NET 4 上的 EF4.3.1 - CLR 类型到 EDM 类型的映射不明确,因为多个 CLR 类型与 EDM 类型匹配”

好的,所以我用谷歌搜索它,它说两个类不能具有相同的名称。好吧,但是我没有两个同名的类。

在进一步研究了异常之后,我看到它说它找到了一个新的 CLR-Type:UserProfile .. 嗯,这就是简单成员第一次添加的内容。

所以我去将类名从 UserProfile 更改为 -> UserProfileDB。现在我可以启动页面,甚至可以登录。但是当我运行这样的普通查询时:

 garView.CustomerList = (List<Models.Databasen.t_customers>)
                       (from x in db.t_customers
                        from y in db.t_customer_guarantee
                        where x.id_kund == y.kundid_garanti
                        select x).ToList();  

它失败并告诉我关系是错误的,因为它找不到 UserProfile。我做了一个完整的重构,Visual Studio 做到了。

有人可以告诉我这里有什么问题吗?

4

1 回答 1

0

好的,所以我解决了我的问题!

  1. 删除连接到当前实体模型的所有引用/文件/文件夹。
  2. 创建一个“空项目”,随意命名我的数据库项目
  3. 添加ADO.NET 实体数据模型
  4. 在向导的最后,将实体连接字符串命名为您记得的东西,即(EntityDB)
  5. 右键单击您的主项目选择“添加引用”将其指向您的新项目
  6. 转到“新”项目(DatabaseProject)中的 app.config 并复制(EntityDB)连接字符串或您命名的任何内容,并将其与其他连接字符串一起粘贴到您的 web.config中
  7. 现在这个花了我几分钟才弄清楚....如果您现在构建项目,它将失败...两个项目的元数据文件都将丢失?!

    那么右键单击您的新项目(DatabaseProject)选择-> properties。确保应用程序选项卡是你看到的那个,你也应该从那里开始,如果没有选择它是左上角的选项卡。然后看输出类型,空项目的默认是“ConsoleApplication”,难怪它失败了。选择 --> 类库。按 F5 就可以了!
于 2013-06-09T09:49:29.060 回答