问题标签 [dbcontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3216 浏览

visual-studio - Microsoft.Data.Entity.Design, Version=10.0.0.0 适用于 Visual Studio Developer Preview 11

我在这里尝试一些东西,但一直失败。

我在 Windows Server 2008 R2 上安装了 Visual Studio Developer Preview。如您所知,目前 VS 扩展与 VS 11 Dev Preview 不兼容,但我找到了一种解决方法:

Visual Studio 扩展和 Visual Studio 11 开发。预览

我在 VS 11 上安装了ADO.NET C# DbContext Generator,但是当我尝试运行代码生成时,出现以下错误:

错误:此模板试图加载组件程序集“Microsoft.Data.Entity.Design,Version=10.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”。有关此问题以及如何启用此模板的详细信息,请参阅有关自定义项目模板的文档。

我从添加参考页面检查,没有像上面这样的 dll。

任何机会我都可以使用 VS 11 Dev 完成这项工作。预览?

0 投票
2 回答
7013 浏览

entity-framework-4.1 - Entity Framework 4.1 Database First 不向 DbContext T4 生成的类添加主键

我刚刚开始使用 Entity Framework 4.1,尝试“数据库优先”模式。当 EF 使用“ADO.Net DbContext Generator”生成模型类时,它不应该使用 [Key] 属性标识类的主键吗?没有这个,它似乎与 T4 MVCScaffolding 不兼容。

以下是详细信息:

使用实体数据模型设计器 GUI,我从现有数据库中向模型添加了一个简单的“国家”表。GUI 正确地将名为“PK”的单个整数标识键字段识别为我的主键。(唉!我是新用户,所以我不能添加屏幕截图。我在下面包含了 CSDL。)但是,当 EF 使用“ADO.Net DbContext Generator”生成代码时,它不能识别 PK field 作为生成类中的关键字段(参见下面的代码摘录)。

“国家”表的 CSDL:

这是自动生成的代码:

当我尝试使用 MVCScaffolding T4 模板构建控制器时,这会导致问题。我收到错误“没有属性似乎是主键”。NuGet 包管理器控制台的命令和输出如下:

但是,如果我手动更改生成的类以向字段添加 [Key] 属性,那么上面显示的完全相同的脚手架命令可以正常工作:

那么为什么 EF Database First 和 T4 MVCScaffolding 不能很好地结合在一起呢?即使没有脚手架问题,EF 类是否不需要知道关键字段是什么?

0 投票
2 回答
11103 浏览

entity-framework - 将库从 ObjectContext 转换为 DbContext

我有一个库(基于旧博客文章中的代码),它允许我使用 Entity Framework 非常轻松地围绕我的数据访问封装一个外观。它使用 ObjectContext 并且对于我的目的来说已经足够好。

但是现在,我们正在兴奋地首先使用 DbContext 研究代码,当然希望尽可能多地重用/调整我们现有的工作。

一切顺利,天真地使用 IObjectContextAdapter 转换我们的 Facade 启用库,直到我们尝试使用我们的外观,当收到以下错误时:

类型“Employee”不能用作泛型类型或方法“DbContextManagement.FacadeBase”中的类型参数“TEntity”。没有从“Employee”到“System.Data.Objects.DataClasses.EntityObject”的隐式引用转换

MSDN 说:

DbContext API 不支持 EntityObject 派生类型,要使用这些实体类型,您必须使用 ObjectContext API。

这很好,但是我将如何继续完成我的重构以绕过这种无能?

这是一些代码(引入了换行符):

FacadeBase.cs

EmployeeFacade.cs

员工.cs

0 投票
1 回答
63020 浏览

entity-framework - 通过 EF 插入后获取自动身份密钥

通过 Entity Framework 4.1 添加记录时,是否有直接检索数据库自动生成的主键的方法?

例如:

SQL 等价物是:

顺便说一句,我使用的是 MySQL,但 SQL 与 MSSQL 上的相同

0 投票
1 回答
724 浏览

c# - 我对 linq to entity 中的 find 方法感到困惑。访问三级孩子

你好会尽量做到非常具体,因为这对我来说非常重要。假设您有以下表结构:

在此处输入图像描述

以下代码使用 find 方法将数据插入到特定的 MvrMeds。find 方法找到主键 PKMvrMedsId 然后我关联表如下所示:

但我想知道如何使用 Mvrs 表执行与上述相同的插入操作:

我的第一次尝试

第二次尝试

并且知道我不确定如何在不过度复杂化的情况下解决这个问题。

0 投票
3 回答
1475 浏览

asp.net-mvc-3 - Custom Membership + Ninject + InRequestScope = ObjectContext 实例已被释放

ObjectContext 实例已在 InRequestScope 中处理!

我在网上尝试了几个小时试图解决一个问题。

ObjectContext 实例已被释放,不能再用于需要连接的操作。

我发现了几篇有同样问题的文章和帖子,比如这个这个这个这个

我尝试了所有方法,但总是出现错误。


代码

语境

忍者

存储库

对于ProjectImageRepository, AddressRepository,RoleRepositoryUserRepository实现遵循相同的模型!

由于范围是请求,Ninject 应该在请求结束时处理对象。但在某些情况下,dispose 会在完成请求之前发生。

尝试

我不确定问题是否与自定义成员资格有关,但做了一些测试。如下:

忍者

所以没有更多的错误!

但是又出现了一个问题!由于repositoryandcontext是单例对象,因此不会更新。

例如,如果我为项目注册了一个新地址,则收藏project.Addresses不会更新!

注意:地址是在数据库中注册的,没有任何问题!

0 投票
1 回答
2177 浏览

entity-framework - 如何在实体框架中创建对 Context 对象的引用以及如何使用 DBContext 对象?

我有一个正在做的项目。我决定将实体框架与 DBContext 生成器一起使用(以具有不感知对象的持久性),但我现在遇到了一些问题。

这是我设置解决方案的方式:

解决方案:
- MyProject(我的 Web 应用程序项目)
- BusinessObjects(项目)包含 myproject.tt 文件,其中包含所有对象(实体)。每一个都在单独的 .cs 文件中。
- DataAccess(项目)包含 myproject.edmx、myproject.Context.tt 文件

这是我的问题:(我对这一切都很陌生)

假设我有对象(实体)作业,我想在这个对象上定义选择、插入、更新和删除方法。我在哪里做呢?我尝试在 BusinessObjects 项目中创建文件夹 Custom(我将在其中放置所有自定义项)。然后,我想在那里定义我的方法,但我不知道如何创建 ctx(上下文)对象的新实例。

这是我的代码:

我得到的错误消息是命名空间中不存在 BestGigEntities。BestGigEntities 应该存在于 BusinessObjects 中,但不知何故,当我尝试从 BusinessObject 项目中访问它时它不可见。但我可以从我的主要网络项目中看到它。在 myproject.Context.tt 中,我将 BusinessObjects 指定为自定义工具命名空间。为什么我看不到?

我检查了我的 myproject.Context.cs 文件,我可以看到

一切似乎都很好。我几乎可以肯定我正确添加了所有引用。我在想也许我想在错误的地方定义这些方法?

BestGigEntities 在我的网络项目中是可见的,我可以从那里使用它。

任何帮助表示赞赏。

0 投票
2 回答
741 浏览

asp.net-mvc-3 - 从 EF Code First 生成 EDM 视图

我刚刚使用 Entity Framework Code First 创建了我的数据库,一切都运行良好。但是我想查看实体的架构;几乎就像首先从代码生成 EDMX,但它不需要做任何事情。我该怎么做我听说有一个 nuget 包,但我没有找到它。谢谢您的帮助!

0 投票
0 回答
785 浏览

entity-framework-4.1 - Entity Framework 4.2 - 如何使用数据库生成的主键值实现 TPT 继承?

我想在以下场景中使用 EF (4.2):

  • 已经存在一个数据库(所以我选择了数据库优先的方法),它是一个 SQL Anywhere 数据库。
  • 我想使用持久性无知的业务对象,所以我使用模板从 EDMDbContext生成类。POCO
  • 我的实体之间有一个简单的继承层次结构:一个抽象的基础实体和两个具体的派生实体。
  • 在数据库中,每种类型的继承层次都有一个表(Table-Per-Type Strategy)。
  • 这三个表中的每一个都有一个主键列 ( Id, type: integer),具体实体与基本实体的关联是通过Id在两个表中具有相同的来完成的(这意味着Id具体类型表的主键 ( )同时是基表的外键;我认为这是一种非常常见的方法)。

我必须在设计器中手动定义继承,因为 EDM 助手不会自动识别,即希望在所描述的实体之间具有继承关联。

到此为止,没有任何更大的问题。现在到手头的问题:我使用的数据库有一个限制:Primarykey值必须由数据库生成,使用数据库函数。我想before-insert-triggerbase-table.

为了让实体框架知道一个值是由数据库生成的,我设置了toStoreGeneratedPatternIdProperty的属性(据我了解,这是在插入新的实体实例后告诉EF获取生成的值的方式)。base-entityIdentity

当我创建派生实体的新实例时,将其添加到上下文的对应并调用时,会抛出 a DbSetDbContext说明违反了约束。通过检查数据库的请求日志,我看到基本实体被插入到基表中,但是在派生表中插入行时,出现上述错误,因为它显然没有使用新生成的基表中的新条目。SaveChangesDbUpdateExceptionforeignkeyId

由于我认为在数据库级别上对此我无能为力,因此问题是,是否可以配置(或修改)EDM 或 DbContext 以首先插入基本行,然后获取生成的Id并将其用于插入派生行。

我知道有几种方法可以避免这种情况(不使用继承,使用存储过程插入新的派生实体,在插入之前调用生成 id 的 db 函数并Id自己在实体上设置属性),但目前上述行为将是最可取的,所以我想确保在决定任何“B计划”之前不要忽视某些事情。

非常感谢有关此主题的任何建议,在此先感谢。

这是触发器的代码:

在触发器中调用函数“F_GET_NEW_ID”来为基表中的新条目生成新 ID。它有两个参数:"Tablename" -> 应该为其生成新ID的表的名称,第二个参数取数据库所有表中标准列的值(生成新ID是必需的) )。

0 投票
3 回答
1683 浏览

linq - 实体框架 (4.2) HasRequired 导致意外的 LEFT OUTER JOIN

似乎实体框架(来自 NuGet 的最新版本)在为导航属性构造连接而不是定义的第一个连接时可能会忽略 HasRequired 配置。

例如,给定一个具有以下配置的 POCO 对象(Person):

我正在尝试使用以下查询加载人员列表:

实体框架生成以下查询:

请注意,*The_Addresses* 表的连接是内连接(如预期的那样),但是,*The_Work_Places* 的后续连接是外连接。鉴于 Address 和 WorkPlace 属性都被标记为必需,我希望这两个连接都是内部连接。我还尝试使用 Required 属性标记 Address 和 WorkPlace 属性,但这没有效果。

这是一个错误还是我可能配置错误?建议?