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

本文关键字:EntitiesLan 方法 属性 之间 不明确 调用 | 更新日期: 2023-09-27 18:15:53

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

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

我使用.sdf Database文件的edmx模型(EntitiesLan)请帮助我,我应该改变,以摆脱这个错误....谢谢!

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

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

在以前版本的实体框架中,使用EF设计器创建的模型将生成从ObjectContext派生的上下文和从EntityObject派生的实体类。

从EF4.1开始,我们建议使用代码生成模板来生成从DbContext和POCO实体类派生的上下文。

在Visual Studio 2012中,你得到DbContext代码默认生成的所有新模型与EF设计器。现有模型将继续生成基于ObjectContext的代码,除非您决定切换到基于DbContext的代码生成器。

来源:MSDN

<

解决方案/strong>

Sergey Berezovskiy在这篇文章中描述了解决方案。

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

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

当您在edmx设计器中同时拥有模板和启用的代码生成时,将生成两组实体。这就是名字冲突的原因。

你会发现这篇文章对你的理解和解决这个问题很有用