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

C# 以下方法或属性之间的调用不明确:';EntitiesLan.EntitiesLan()';和';EntitiesLan.EntitiesLan()';,c#,wpf,linq-to-entities,entity-framework-5,ambiguity,C#,Wpf,Linq To Entities,Entity Framework 5,Ambiguity,我有下面的代码,不知道为什么会抛出这个错误 using (var context = new EntitiesPlesk()) { /////Some Code } using (var context = new EntitiesLan()) // Error Line { /////Some Code } 我正在使用edmx模型(EntitiesLan)的.sdf数据库文

我有下面的代码,不知道为什么会抛出这个错误

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

using (var context = new EntitiesLan())   // Error Line
       {
             /////Some Code
       } 
我正在使用edmx模型(EntitiesLan)的
.sdf数据库
文件
请帮助我在哪里更改以消除此错误…谢谢

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

对于实体框架的早期版本,使用EF设计器创建的模型将生成从ObjectContext派生的上下文和从EntityObject派生的实体类

从EF4.1开始,我们建议切换到代码生成模板,该模板生成从DbContext和POCO实体类派生的上下文

在Visual Studio 2012中,默认情况下会为使用EF设计器创建的所有新模型生成DbContext代码。现有模型将继续生成基于ObjectContext的代码,除非您决定切换到基于DbContext的代码生成器

资料来源:

解决方案

在SO post中描述了如下解决方案

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

如果使用默认代码生成策略,则实体和上下文将生成到
MainModel.Designer.cs
文件中。这将是标准实体,继承自
EntityObject
,上下文将继承自
ObjectContext
。通过
entityframework5
我们可以生成
POCO
实体。整个生成是在
T4
模板中完成的,这些模板生成上下文,继承自
DbContext
,以及
POCO
实体,没有一些基本类型(好的,仅对象)

当您在edmx designer中同时启用了模板和代码生成时,将生成两组实体。这就是为什么你的名字有冲突


您可以发现,为了明确您对该问题的理解和解决方案,发布此帖子非常有用。

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

对于实体框架的早期版本,使用EF设计器创建的模型将生成从ObjectContext派生的上下文和从EntityObject派生的实体类

从EF4.1开始,我们建议切换到代码生成模板,该模板生成从DbContext和POCO实体类派生的上下文

在Visual Studio 2012中,默认情况下会为使用EF设计器创建的所有新模型生成DbContext代码。现有模型将继续生成基于ObjectContext的代码,除非您决定切换到基于DbContext的代码生成器

资料来源:

解决方案

在SO post中描述了如下解决方案

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

如果使用默认代码生成策略,则实体和上下文将生成到
MainModel.Designer.cs
文件中。这将是标准实体,继承自
EntityObject
,上下文将继承自
ObjectContext
。通过
entityframework5
我们可以生成
POCO
实体。整个生成是在
T4
模板中完成的,这些模板生成上下文,继承自
DbContext
,以及
POCO
实体,没有一些基本类型(好的,仅对象)

当您在edmx designer中同时启用了模板和代码生成时,将生成两组实体。这就是为什么你的名字有冲突


您可以发现SO post非常有用,可以帮助您明确理解和解决此问题。

对于给定的代码,模糊之处不可见。当您在VisualStudio中按F12键(转到定义)时,您将在何处着陆?它通常会列出所有可能发生的事件。@AndreasH。是的,它转到它的定义:公共部分类rshotelentieslan:DbContext{public rshotelentieslan():base(“name=rshotelentieslan”){}@AndreasH.还记得我用一个.sdf数据库文件绑定了这个edmx模型吗?因为它是一个分部类,所以你确定没有构造函数的进一步定义?可能在另一个文件中?如果你注释掉或修改了你找到的构造函数,会发生什么?它会导致歧义的“第二部分”。对于给定的代码,它是n当您在Visual Studio中按F12键(转到定义)时,它通常会列出所有可能发生的情况。@AndreasH.是的,它转到它的定义:公共部分类rshotelentieslan:DbContext{public rshotelentieslan():base(“name=rshotelentieslan”){}@AndreasH.记得我用一个.sdf数据库文件绑定了这个edmx模型吗?因为它是一个分部类,所以你确定没有构造函数的进一步定义?可能在另一个文件中?如果你注释掉或更改了你找到的构造函数,会发生什么?它会导致你陷入歧义的“第二部分”。