问题标签 [ef-model-first]

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 回答
1714 浏览

c# - LINQ generates incorrect SQL (reference to a non-existent table)

MVC3 project, using LINQ to Entity, and Entity Framework 4 Code-First.

In another post ( Return products which belong to all tags in a list using LINQ ), I received assistance in creating a LINQ statement to return a subset of data.

The LINQ is syntactically correct and compiles, but generates incorrect SQL. Specifically, it makes reference to a non-existent table. If I correct the table name, it returns the correct data, so the LINQ seems to be correct.

Note in the interest of keeping this long post from getting even longer, I wont post the object classes (Product, Tag, and ProductTag), but they are listed in my previous question here: Return products which belong to all tags in a list using LINQ

The LINQ:


Following is the incorrect and correct SQL code.

The incorrect SQL makes references to non-existent table

as well as a malformed field

If I correct these to "[dbo].[ProductTag]" and "[ExtentN].[TagId]", the SQL executes correctly and returns the correct data.

The LINQ-generated (and faulty) SQL

The corrected SQL


Again, the only changes in the SQL is

Note I've ensured that the database has no object named dbo.TagProduct, and no references exist in my code to TagProduct (nor has it ever).

Is there a problem in my LINQ statement, or is this a LINQ bug? I'm ok with scrapping it altogether and just creating a stored-procedure, but I'd rather find a fix.

Thanks and apologies for the long post.

EDIT

The problem turned out to be a flawed entity model, with excessive and unnecessary navigation properties between the tables in a many-to-many relationship. Slauma's detailed answer was key in understanding what was happening.

The new model is as follows:

0 投票
1 回答
1644 浏览

.net - 实体框架 - 模型优先,多对多映射

在数据库中,我有两个表UserOrganization一个桥接表Users_Orgs

Users_Orgs表有一个由两列userId和组成的复合键organizationId。当我使用设计器创建关联时,它会为引用约束创建两个主体 -UsersUsers_Orgs. 问题出在Users_Orgs约束上——它有一个由organizationId和组成的键userId。由于organizationId不在User表中,因此无法映射,因此无法编译。

Users_Orgs 表 Users_Orgs 约束

单击“删除”按钮时,对话框将关闭并organizationId仅映射到用户表的主键(不是 userId)

如何在现有数据库上使用复合键进行多对多映射?

0 投票
1 回答
423 浏览

.net - 如何使用 MVC3 多对多关系和 EF4.1 模型优先检索数据?

我是一个非常初学者,我想做一些非常简单的事情,我想我错过了一些东西,但我找不到答案。

我有两个用 EF4.1 映射的多对多关系表

并生成了一个上下文类:

在我的索引视图中,我只需要显示包中的数据以及与此包相关的活动。

这是控制器:

在我看来,这是我想做的事情:

这样做的最佳方法/做法是什么?我可以通过在我的 EDM 等中创建第三个表来做到这一点,但是有可能建立一个原生的多对多关系有什么意义呢?

对不起,如果你觉得很明显,那不是我,我只是一个初学者。

0 投票
2 回答
1019 浏览

c# - ObjectContext 在调试模式下是公共的,在发布模式下是内部的

有没有一种简单的方法可以在调试模式下将 ObjectContext 公开,在发布模式下将其设为内部?

使用 Linqpad 连接到 ObjectContext 以进行快速测试和查询非常方便,因此出于开发目的,我希望它是公开的。但是我不想考虑将同样的便利部署给一些聪明的客户时的后果。

0 投票
2 回答
3050 浏览

.net - 实体框架模型第一个时间戳

我正在开发基于实体框架的应用程序。我正在使用模型优先的方法。我想处理并发问题。正如在许多文章中所写的那样,我将通过将 ConcurrencyMode 固定在一个时间戳字段上来做到这一点。目前我面临的问题 - 我无法添加时间戳类型的字段(列)。我怎样才能在模型中做到这一点?

如此处所写:

http://social.msdn.microsoft.com/Forums/is/adodotnetentityframework/thread/1ed8d1e4-9d78-4593-9b10-33e033837af8 \

我尝试安装 Entity Designer Database Generation Power Pack,但我仍然看不到从模型生成时间戳的可能性(我什至尝试在 edmx 文件中手动设置它,但我仍然没有在生成的数据库中收到时间戳 fcolumn)。

请帮忙。

0 投票
1 回答
435 浏览

entity-framework - 如何在 Model-First 中定义并发属性

我使用Entity Framework Model-First,我想定义一个用于并发检查的列。我的一个名为 Version 的属性,我将其并发模式设置为“固定”,类型设置为“二进制”,“StoreGeneratedPattern”设置为“计算”。我想要像时间戳这样的列,每次插入或更新时,数据库都会自动为记录生成一个值。

但是,当我插入记录时,Version 属性不可为空,因此,如果我不为其分配值,SaveChanges 将不起作用。我该如何解决?我创建并发属性的解决方案是否正确?

提前致谢!

0 投票
1 回答
136 浏览

asp.net - 首先在实体框架模型中设计“热与否”风格的数据库

我想在电影之间设计一种决斗,让两部电影相互对抗,用户选择更好的,然后得到一分。在数据库中,我想要一个列表,列出所有已决斗的电影以及它们分别获胜的次数。

电影

决斗

我正在尝试进行设置,以便电影实体具有 1 个名为 Duels 的属性,我可以在其中获取涉及它的所有决斗实体,无论它是竞争者一还是竞争者二。ContenderOne 和 ContenderTwo 应该链接回电影。

任何想法如何实现这一目标?我难住了。

0 投票
2 回答
8001 浏览

.net - 使用具有模型优先方法的 EF4 迁移工具

首先使用代码时,EF 迁移实用程序似乎相当不错。

根据这篇博文,我尝试在我的项目中设置它,我们使用模型优先。运行Enable-Migrations命令时,我收到以下错误:

不支持从使用 Database First 或 Model First 创建的 DbContext 创建 DbModelBuilder 或编写 EDMX。EDMX 只能从不使用现有 DbCompiledModel 创建的 Code First DbContext 中获取。

有什么办法可以让我们在不切换到代码优先的情况下使用 EF 迁移?

0 投票
2 回答
443 浏览

c# - 如何通过 C# 运行我的 Entity Designer DDL 脚本?

我尝试了几种方法来通过 C# 运行我的 Model-First Entity Designer SQL 文件,但没有运气。我有一个 SQL 文件,其中包含我加载和读取的所有代码。

下面是我的代码。它在执行的每个命令上都会出错。请注意,我正在通过我的模型容器的连接属性检索连接,该属性的类型为DbConnection,但我不确定这是否与它有关。

C#脚本:

收到错误。我收到的一些错误如下:

错误一:

查询语法无效。靠近标识符“OBJECT_ID”,第 1 行,第 4 列。

错误2:

查询语法无效。靠近标识符“SCHEMA_ID”,第 1 行,第 4 列。

0 投票
1 回答
192 浏览

.net - 使用外键作为复合主键对第一个联结表进行建模?

我有一个Job表和一个Contact表,我需要创建另一个表JobContact以允许多对多,但我希望JobIdandContactId用作其主键。

我在设计器上需要它,所以我可以向它添加额外的列。

有没有一种简单的方法可以做到这一点?