2

我创建了一个项目是 Visual Studio 2012,并通过“数据库优先”方法设置了实体框架。但是,在映射到数据库并生成应该由框架自动生成的 Designer.cs 文件后,我最终会遇到大量错误,我无法从那里得到它们。我已将错误作为 txt 文件附加,以供您查看和专业评论。

请注意,我是 .net 框架的新手,尤其是 EF 领域。因此,如果您能给我具体的答案,我将不胜感激,以便它有助​​于我的其余学习曲线。

错误 1 ​​'System.Data.Entity.DbContext.DbContext(string, System.Data.Entity.Infrastructure.DbCompiledModel)' 的最佳重载方法匹配有一些无效参数 C:\Users\user\Documents\TRS\TRSModel\TRSEntityModel .Designer.cs 45 32 TRSDataModel

错误 2 参数 2:无法从 'string' 转换为 'System.Data.Entity.Infrastructure.DbCompiledModel' C:\Users\user\Documents\TRS\TRSModel\TRSEntityModel.Designer.cs 45 57 TRSDataModel

错误 3“TRSModel.TRSEntities”不包含“ContextOptions”的定义,并且找不到接受“TRSModel.TRSEntities”类型的第一个参数的扩展方法“ContextOptions”(您是否缺少 using 指令或程序集引用?) C:\Users\user\Documents\TRS\TRSModel\TRSEntityModel.Designer.cs 47 18 TRSDataModel

错误 4 'System.Data.Entity.DbContext.DbContext(string, System.Data.Entity.Infrastructure.DbCompiledModel)' 的最佳重载方法匹配有一些无效参数 C:\Users\user\Documents\TRS\TRSModel\TRSEntityModel .Designer.cs 54 55 TRSDataModel

错误 5 参数 2:无法从 'string' 转换为 'System.Data.Entity.Infrastructure.DbCompiledModel' C:\Users\user\Documents\TRS\TRSModel\TRSEntityModel.Designer.cs 54 78 TRSDataModel

错误 6“TRSModel.TRSEntities”不包含“ContextOptions”的定义,并且找不到接受“TRSModel.TRSEntities”类型的第一个参数的扩展方法“ContextOptions”(您是否缺少 using 指令或程序集引用?) C:\Users\user\Documents\TRS\TRSModel\TRSEntityModel.Designer.cs 56 18 TRSDataModel

错误 7 'System.Data.Entity.DbContext.DbContext(System.Data.Common.DbConnection, bool)' 的最佳重载方法匹配有一些无效参数 C:\Users\user\Documents\TRS\TRSModel\TRSEntityModel.Designer .cs 63 59 TRSDataModel

错误 8 参数 2:无法从 'string' 转换为 'bool' C:\Users\user\Documents\TRS\TRSModel\TRSEntityModel.Designer.cs 63 76 TRSDataModel 错误 9 'TRSModel.TRSEntities' 不包含 '可以找到 ContextOptions' 并且没有扩展方法 'ContextOptions' 接受类型为 'TRSModel.TRSEntities' 的第一个参数(您是否缺少 using 指令或程序集引用?) C:\Users\user\Documents\TRS\TRSModel\TRSEntityModel .Designer.cs 65 18 TRSDataModel

// Lines 10-17
using System;
using System.ComponentModel;
using System.Data.EntityClient;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using System.Linq;
using System.Runtime.Serialization;
using System.Xml.Serialization;


// Lines 45-47
public TRSEntities() : base("name=TRSEntities", "TRSEntities")
{
    this.ContextOptions.LazyLoadingEnabled = true;
    OnContextCreated();
}

// Lines 54-56
public TRSEntities(string connectionString) : base(connectionString, "TRSEntities")
{
    this.ContextOptions.LazyLoadingEnabled = true;
    OnContextCreated();
}

// Lines 63-65
public TRSEntities(EntityConnection connection) : base(connection, "TRSEntities")
{
    this.ContextOptions.LazyLoadingEnabled = true;
    OnContextCreated();
}



// Error return by adding the public class TRSEntities to where Rene suggested 
Error   1   Missing partial modifier on declaration of type 'TRSModel.TRSEntities'; another partial declaration of this type exists C:\Users\user\Documents\TRS\TRSModel\TRSEntityModel.Designer.cs 33  18  TRSDataModel
Error   2   'TRSEntities': member names cannot be the usere as their enclosing type C:\Users\user\Documents\TRS\TRSModel\TRSEntityModel.Designer.cs 40  30  TRSDataModel
4

2 回答 2

1

问题正如我最初所怀疑的那样。扩展的 TRSEntities 类在错误的命名空间中声明,因此无法识别基 ObjectContext 类,导致 TRSEntities 类无法访问此基类的方法。这是由于 EF 名称从“TRSModel”更改为“TRSEntityModel”而发生的,这显然没有在 ER 引擎中注册,因此,基于先前的命名空间自动生成此上下文文件。

我仍然不确定的一件事是如何使这种名称更改沉入 EF,以便它不会继续使用旧名称。

于 2013-02-24T15:19:06.290 回答
1

使用 NuGet 到 EF6 安装程序,但还必须安装VS2012 或 VS2013 EF6 的工具

于 2014-03-25T01:13:31.850 回答