问题标签 [database-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 回答
238 浏览

.net - EntityFramework fluent API“孙子”关系映射

我正在尝试映射 EF fluent API 中似乎非常常见的情况并且已经碰壁了。我有以下课程:

使用下表:

公司
ID - int

部门:
Id - int CompanyId int (FK)

员工
ID - int
姓名 - varchar(50)
DivisionId - int (FK)

如果 Employee 表有一个 CompanyID FK,这个映射将非常简单:

但是,由于我没有从 Employee 表到 Company 表的直接 FK,我似乎无法映射 Company 对象中的 Employees 属性以进行延迟加载。

我错过了什么?

0 投票
2 回答
571 浏览

.net - 替换实体映射中的下划线

使用 EF4 创建模型时,我想替换所有下划线以及表/列前缀,以便模型读取干净。我们的数据库的结构类似于:

我想有这样的实体名称:

等等等等。

生成 edmx 文件时,EF 设计器会完全按照它们在数据库中的显示方式命名所有实体。我知道可以使用 T4 模板修改此行为,但我刚刚发现我可以在设计器中重命名实体,这会在 edmx 文件中生成 EntitySetMapping 元素,因此 T4 似乎有点过头了。似乎我只想对 edmx 文件进行后处理,而不使用 T4 模板,因为在替换之后,我想要默认行为。哪种方法最合适,为什么?

0 投票
3 回答
19525 浏览

c# - 代码优先与数据库优先

我基于现有数据库创建了一个实体框架模型,然后从该模型生成 POCO 实体。我的 web.config 中的连接字符串不是实体框架,它只是标准连接字符串(它缺少 CSDL、SSDL、MSL 引用)。

我可以编译我的应用程序,但是当我运行时出现此错误:

如果在 Code First 模式下使用,使用用于 Database First 和 Model First 开发的 T4 模板生成的代码可能无法正常工作。要继续使用 Database First 或 Model First,请确保在执行应用程序的配置文件中指定了实体框架连接字符串。要使用从 Database First 或 Model First 生成的这些类,使用 Code First 添加使用属性或 DbModelBuilder API 的任何其他配置,然后删除引发此异常的代码


我的问题是,它在我的代码中哪里意识到 POCO 来自自动生成,我怎样才能让它表现得像 Code First?我不想在我的连接字符串中引用 CSDL 等。

0 投票
3 回答
7824 浏览

asp.net-mvc-3 - 如何为 Data-First 自动创建的实体添加数据注释?

如果模型优先,我们使用[MetadataType(typeof(ConceptMetadataSource))]附加一个 MetadataSource 文件,其中包含所有数据注释,如 [HiddenInput(DisplayValue = false)]or [Display(Name = "Title")]

例如:

现在,我正在使用数据库优先的方法,因为有一个现有的数据库。这一次,实体类是由 edmx 模型自动创建的。在每个实体类的开头,下面都有注释行:

由于一旦我们修改了数据库中的表,代码就会重新生成,因此每次重新生成实体类时,数据注释都会被清除。

谁能告诉我注释这些实体类的最佳方法是什么?谢谢你。

0 投票
2 回答
2352 浏览

asp.net-mvc-3 - 没有主键的桥接表

我的数据库设计中有一个桥接表,它没有主键。当我尝试使用 ASP.NET MVC 3 的数据库优先方法来创建我的模型时,它会创建一个带有警告的模型“表/视图 'CRM_Test_1.dbo.SalesOrderProduct' 没有定义主键并且没有有效可以推断出主键。此表/视图已被排除。要使用该实体,您需要查看您的架构,添加正确的键,然后取消注释。

我做错了什么还是有办法让这个警告消失?

谢谢。

0 投票
1 回答
1371 浏览

stored-procedures - DbContext 生成器和存储过程

注意:我将 EF 4.2 与 Database First Method 和 DbContext 一起使用。这不是代码优先。

我正在尝试获取 DbContext t4 模板来生成存储过程方法。它似乎内置了这样做的功能(它映射到基本 ObjectContext),但由于某种原因它顽固地拒绝生成它们。我认为它可能与返回类型(它是单个 int,而不是模型类型)有关,但我不确定。

在任何人说之前。是的,我知道 DbContext 不支持存储过程,这就是 t4 模板使用 IObjectContextAdapter 将其转换为 ObjectContext 的原因。这是内置功能。

过去,这些方法只是自动生成的。我不知道为什么不是现在。函数出现在 .edmx 文件中。关于如何解决这个问题的任何建议?

0 投票
1 回答
2719 浏览

asp.net-mvc-3 - 在 ASP.NET MVC 3 中使用实体框架进行用户身份验证

我有一个在此处输入图像描述现有的数据库,我用它来创建一个使用数据库优先方法的模型。请参考数据库图。

在我的解决方案文件中,我有一个模型的类库,它与数据库有一个 ADO.NET 连接,并且我有一个 ASP.NET MVC 3 Web 应用程序。

我试图在这里获得的功能是 - 用户登录后显示的信息对于每个用户都是不同的。如何将用户登录页面链接到数据库的“用户”表?是直接使用连接字符串还是我需要通过我使用数据库创建的模型?

0 投票
2 回答
8527 浏览

asp.net-mvc - 如何防止在数据库优先模型中删除 DataAnnotations 属性

我有我的带有实体框架的 asp.net mvc 3 应用程序,我使用 Database First 模型来设置它。

我的步骤如下: 1. 使用表生成数据库 2. 创建 ADO.NET 实体数据模型文件 (.edmx) 并导入表 3. 在设计中我添加了一个代码生成项并使用 ADO.NET DbContext Generator 4. a与所有表格模型一起制作的 Model1.tt 支架

我已经编辑了模型并使用 DataAnnotations 属性更新了它们(仅举一个众所周知的例子)

现在,当我对数据库进行更改并将其更新到 edmx 文件时,所有模型都将被覆盖,并且 DataAnnotations 属性将消失。

我的问题:我如何使用数据库优先模型并仍然编辑模型以进行特定验证,就像我可以自由地使用代码优先模型一样?(请不要使用第三方工具解决方案)谢谢

0 投票
1 回答
1136 浏览

entity-framework-4 - EF 数据库优先 - 映射错误 3025

EF 新手并尝试使用“数据库优先”进行尝试。

我在我的 db 3 表中有:

该表PurchaseUsers用于了解哪些参与者正在使用购买。

起初我在该表上没有 PK,但在尝试保存Purchase. 谷歌搜索了一下后,我发现我必须添加一个 PK 以避免这个错误。

但是添加 PK 创建了映射错误,我只是不知道如何解决这个问题或创建映射。该表PurchaseUsers本身在我的 .edmx 模型中不可见,但它在模型浏览器的 Store 中列出。

谢谢。

更新

今天更改了数据库中列的名称。“从数据库更新模型”将新的列名添加到模型中的表中,但没有删除旧的列名。不得不再次从头开始。看起来更新功能不是很好。

0 投票
3 回答
1006 浏览

c# - 从数据库中完全替换实体框架数据模型似乎是不可能的

基本上,我有一个架构更改的 Sql Server 数据库。发生这种情况时,我必须更新 EF 数据模型。如果我所做的只是添加或删除一个表,这很好:转到设计器,从它存在的多个位置之一找到“从数据库更新模型...”并通过向导。

不幸的是,向导不只是让我从数据库中替换整个模型。它一次也只能做一件事。因此,如果我做出了进行多个模式更改的不幸决定,甚至更糟,忘记我做了什么:我必须执行多个步骤,从模型中添加、刷新和删除表。

这显然很麻烦。因此,由于缺乏更好的程序,我不得不删除模型并完成从数据库重新创建它的所有步骤。废话:我把连接字符串留在了配置文件中。现在我必须删除它并重新启动向导,否则它不会生成相同的实体类名,现在我的所有代码都会中断。

为什么这不能为我吹走模型并从数据库中生成?更重要的是,为什么没有其他人问过这个问题?人们在做什么?