问题标签 [entity-framework-4.3]

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 投票
3 回答
46020 浏览

c#-4.0 - 将 LEFT OUTER JOIN 转换为实体框架

这是我要转换为 EF4.3 的 SQL 查询

这是我能想到的最好的 LINQ:

我知道我需要将我的第一个连接(在授权和身份验证之间)合并到,让我们说 x 并应用 DefaultIfEmpty 但无法弄清楚语法。

编辑:图片澄清: 数据模型

任何帮助将不胜感激。问候。

0 投票
1 回答
4594 浏览

c# - -TargetDatabase 标志是否已在 EF 4.3 迁移中重命名?

到目前为止,我一直在使用 Code-First Migrations Beta,当通过包管理器控制台迁移我的数据库时,我能够指定-TargetDatabase, 来指示我希望迁移应用到哪个数据库,如下所示:

由于迁移现在包含在 Entity Framework 4.3 中,我更新了我的应用程序以使用 EF 4.3,但现在我不能再设置-TargetDatabase标志了。在包管理器控制台中运行时,出现以下错误:

我通读了有关 EF 4.3 中迁移的博客文章,但找不到任何有关它的信息。我还注意到对一个旧的 SO 问题的评论说该标志应该是-Target而不是-TargetDatabase,但这似乎也不起作用。该-Target标志似乎用于指定我要迁移到的迁移。

标志是否-TargetDatabase已重命名,或者如何指定要将迁移应用到哪个数据库?

0 投票
1 回答
1513 浏览

c# - EF4:为什么启用延迟加载时必须启用代理创建?

我有一个项目结构如下:.Persistence -> .Repo -> .Services -> .Controllers -> MVC3 App。

每一层都有一个带有接口的程序集,还有一些其他的程序集,如 .Entities、.ViewModels 和通用代码程序集。

持久性- 这包含 EF4 数据上下文(代码优先)和对 EF4.3 的引用。有一个用于创建上下文的工厂,称为 GetContext(),该工厂实现了 IDisposable。这不是单例,因为我认为 Windsor 会使用 LifestyleSingleton() 为我做些什么。
Repo - 这包含实现存储库和规范模式的存储库(http://huyrua.wordpress.com/2010/07/13/entity-framework-4-poco-repository-and-specification-pattern/)。

其他层是不言自明的......

问题:
1. 为什么开启延迟加载时必须开启代理创建?
2. 如果我想设置lazyloading = false,我可以将我在服务层中的IEnumerable 转换为ObjectQuery 以便在那里使用.Include() 吗?

0 投票
2 回答
987 浏览

code-first - 如何让 Entity Framework 4.3 Code First 使用 Table Per Type (TPT) 映射子类?

我正在使用 EF 4.3 Code First 和自动迁移。我有以下 3 个课程:

当我对此运行 update-database 时,它​​使用 TPH (Table-Per-Hierarchy) 为所有 3 个表创建一个表,将所有这些属性合并在一起并添加一个鉴别器列。

我如何确保我最终得到 3 张桌子?

0 投票
3 回答
6736 浏览

c# - 如何解决“内部 .NET Framework 数据提供程序错误 1025。”?

我首先使用实体​​框架 4.3、POCO、数据库,我收到以下错误:

内部 .NET Framework 数据提供程序错误 1025。

问题: 我认为我的查询表达了我的意图,但我似乎遇到了这个错误,所以我想知道是否有人知道我可以如何以不同的方式构建我的查询来解决这个错误?

这是场景...

我有一个 SQL Server 2008 数据库,它有 2 个表 - A 和 B:

一种

  • AId(int - 非空 - 标识 - 主键)
  • AName (nvarchar(10) - 不为空)

  • BId(int - 非空 - 身份 - 主键)
  • SomeName (nvarchar(10) - 不为空)
  • AId(int - 非空 - 连接到表 A 中的 AId 的外键)

然后我像这样定义上下文:

实体类是这样的:

现在查询...

我想要的是每个“B SomeName”都在提供的名称列表中的所有 As,所以我这样做:

为了清楚我的意思,如果表数据如下所示:

我希望返回 A1、A2 和 A4(因此上面的 count 调用将返回 3)。

0 投票
5 回答
10064 浏览

c# - Code first DbMigrator causes error when building from different machines

We have a project under SCM. When I build it from my machine and publish to a remote server via msdeploy, everything works fine.

When my colleague tries the same thing with the same project, freshly pulled from SCM, on the remote server entity framework 4.3.1 DbMigrator throws:

Automatic migration was not applied because it would result in data loss.

As it turns out, it seems that the person who makes the initial publish to the remote server is the "winner". If we drop the database on the remote server, then my colleaugue can publish and I get locked out. My publications result in the same error above.

The config for DbMigrator looks something like this:

I assume this has something to do with the new table __MigrationHistory and the nasty looking long hex string stored in its rows.

I don't want to take full responsibilty for publishing to live. What can I look out for?

0 投票
2 回答
531 浏览

entity-framework - EdmFunction 是否在 EF4.3 代码优先中工作(无 edmx 模型)

ref:如何在 EntityFramework 中创建类似 '234%4' 或 %2324%335%

通过简单地实现函数,使用 [EdmFunction] 的解决方案是否适用于 esql + EF4.3 代码优先(没有 .edmx 文件)?那么它是否可以在 esql 中使用,即:“it.UserName.Like('_user%')”?

0 投票
2 回答
3492 浏览

entity-framework - EF(实体框架)4.3 迁移工具不适用于 EF 4.1 DB

我想修改一个使用 EF 4.1(代码优先)开发的数据库。我将项目升级到 EF 4.3 并按照以下步骤操作:http: //blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-automatic-migrations-walkthrough.aspx

一切进展顺利,但是当我想在当前数据库(EF 4.1 Code First)上进行测试时,Update-Database 会引发此错误:

无法构建下一次迁移,因为目标数据库是使用早于 EF 4.3 的 Code First 版本创建的,并且不包含迁移历史记录表。要开始对该数据库使用迁移,请确保当前模型与目标数据库兼容并执行迁移更新过程。(在 Visual Studio 中,您可以使用包管理器控制台中的 Update-Database 命令来执行迁移更新过程)。

我想知道如何迁移 EF 4.1(代码优先)数据库?此外,数据库是实时的并且有数据,我不能删除表。

0 投票
2 回答
8701 浏览

entity-framework - 首先使用实体​​框架代码保存单个对象

我在项目中使用实体框架 4.3.1,首先使用代码和 DbContext API。我的应用程序是一个 n 层应用程序,其中断开连接的对象可能来自客户端。我正在使用 SQL Server 2008 R2,但很快将迁移到 SQL Azure。我遇到了一个我似乎无法解决的问题。

想象一下我有几节课:

默认情况下,EF 对对象图进行操作。例如,如果我有一个 B 的实例,它封装了 A 的一个实例并且我调用myDbSet.Add(myB);,它也会将 A 的实例标记为正在添加(假设它尚未被跟踪)。

我的应用程序中有一个场景,我需要明确哪些对象被持久化到数据库中,而不是让它跟踪整个对象图。操作顺序如下:

此时我收到一条错误消息,说AcceptChanges cannot continue because the object's key values conflict with another object in the ObjectStateManager. Make sure that the key values are unique before calling AcceptChanges. 我相信会发生这种情况,因为在 myB0 上调用 add 会将 A 的实例标记为已添加,这与已跟踪的 A 实例冲突。

理想情况下,我可以做类似 call的事情myDbSet.AddOnly(myB),但显然我们没有那个选项。

我尝试了几种解决方法:

尝试#1: 首先,我尝试创建一个辅助方法来防止 myA 被第二次添加。

虽然这解决了它尝试添加 myA 的问题,但它仍然会导致 ObjectStateManager 中的键违规。

尝试 #2: 我尝试执行与上述相同的操作,但将状态设置为 Detached 而不是 Unchanged。这适用于保存,但它坚持设置myB0.A = null,这对我的代码有其他不利影响。

尝试 #3: 我在整个 DbContext 周围使用了 TransactionScope。但是,即使SaveChanges()在每个Attach()and之间调用Add(),更改跟踪器也不会刷新其跟踪的条目,所以我遇到了与尝试 #1 相同的问题。

尝试#4: 我继续使用 TransactionScope,除了我使用存储库/DAO 模式并在内部创建一个新的 DbContext 并调用SaveChanges()我所做的每个不同的操作。在这种情况下,我收到错误消息“存储更新、插入或删除语句影响了意外的行数。” 使用 SQL Profiler 时,我发现在调用我SaveChanges()执行的第二个操作(第一个Add())时,它实际上第二次将UPDATESQL 从第一个操作发送到数据库——但不会更改任何行。对我来说,这感觉就像实体框架中的一个错误。

尝试 #5: 我决定只使用 DbTransaction,而不是使用 TransactionScope。我仍然创建多个上下文,但是在创建每个新上下文时将一个预构建的 EntityConnection 传递给它(通过缓存和手动打开由第一个上下文构建的 EntityConnection)。但是,当我这样做时,第二个上下文会运行我定义的初始化程序,即使它在应用程序首次启动时已经运行。在开发环境中,我有一些测试数据的种子,它实际上超时等待我第一次Attach()修改的表上的数据库锁定(但由于事务仍然打开而仍然被锁定)。

帮助!!我已经尝试了所有我能想到的东西,但没有完全重构我的应用程序以不使用导航属性或使用手动构建的 DAO 来执行 INSERT、UPDATE 和 DELETE 语句,我不知所措。似乎必须有一种方法可以让实体框架为 O/R 映射带来好处,但仍然需要手动控制事务中的操作!

0 投票
1 回答
2093 浏览

foreign-key-relationship - 使用包含外键关系的多列(复合)主键

我正在使用具有简单设计的 Entity Framework 4.3:

所以你可以看到一个 Post 有多个标签,这些标签使用 PostID 和 Tag 的复合主键。

当我跑步时,update-database我得到:

我尝试将 [Required] 属性应用于 Post 和 PostID。我尝试将 ForeignKey 属性放在 FK 关系的另一端。我已经尝试将 InverseProperty 属性应用于 Post (它将错误更改为只是一个模糊的 NullReferenceException - 这似乎是一个错误)。