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模型吗?因为它是一个分部类,所以你确定没有构造函数的进一步定义?可能在另一个文件中?如果你注释掉或更改了你找到的构造函数,会发生什么?它会导致你陷入歧义的“第二部分”。