以下方法或属性之间的调用不明确:'EntitiesLan.EntitiesLan()' 和 'EntitiesLan.EntitiesLan()'

The call is ambiguous between the following methods or properties: 'EntitiesLan.EntitiesLan()' and 'EntitiesLan.EntitiesLan()'

我有下面的代码,不知道为什么会报这个错。

 using (var context = new EntitiesPlesk())
       {
             /////Some Code
       } 

using (var context = new EntitiesLan())   // Error Line
       {
             /////Some Code
       } 

我正在为 edmx 模型 (EntitiesLan) 使用 .sdf Database 文件 请帮助我应该在哪里更改以消除此错误....谢谢!

问题不在于您的代码,问题实际上是您正试图在更高版本的 EntityFramework 中重新生成您的 edmx。一种可能是您在 VS2013 中修改了 VS2010 的旧项目。

With previous version of Entity Framework a model created with the EF Designer would generate a context that derived from ObjectContext and entity classes that derived from EntityObject.

Starting with EF4.1 we recommended swapping to a code generation template that generates a context deriving from DbContext and POCO entity classes.

In Visual Studio 2012 you get DbContext code generated by default for all new models created with the EF Designer. Existing models will continue to generate ObjectContext based code unless you decide to swap to the DbContext based code generator.

来源:MSDN

解决方案

Sergey Berezovskiy has described the solution as following, in THIS 所以 post.

您应该为 .edmx 文件使用 None 代码生成策略。或者删除生成模型实体和上下文的 MainModel.ttMainModel.Context.tt 模板。

如果您使用默认代码生成策略,那么实体和上下文将生成到 MainModel.Designer.cs 文件中。那将是标准实体,继承自 EntityObject,上下文将继承自 ObjectContextEntity Framework 5 我们有 POCO 个实体生成。整个生成是在 T4 模板中完成的,这些模板生成上下文,继承自 DbContext,并且 POCO 实体没有一些基本类型(好吧,只有对象)。

当您在 edmx 设计器中同时拥有模板和启用代码生成时,将生成两组实体。这就是为什么你有名称冲突。

您可以找到 THIS SO post 有用的信息,以明确您对这个问题的理解和解决方案。