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

entity-framework - 在 EF DatabaseFirst 中为实体定义通用存储库

我正在从 CodeFirst 迁移到 DatabaseFirst 以映射我的视图。在我的 CodeFirst 方法中,我有一个这样的基本实体:

我从这个基类派生了我的所有类,因为它们中的每一个都有一个 Id。所以我用这个 BaseClass 创建了一个通用存储库。我的存储库如下所示:

所以我能够通过像这样指定泛型类型参数来创建存储库

在 DatabaseFirst 中,我无法从基类派生实体类。有没有办法做到这一点,或者你有什么建议?

0 投票
2 回答
3443 浏览

entity-framework - 如何将 DBContext Generator 中的类映射到现有 POCO 域类

我是实体框架和数据库优先方法的新手。谁能帮帮我吗?

情况如下:

我有一个干净、普通的域类(Person),只有属性。这个类是在一个 VS 项目中定义的,它只包含领域类,没有任何对实体框架或其他属于数据访问层的东西的引用。

我还有一个数据库表(tblPerson)。我为它创建了一个 EDMX 并使用 DbContext Generator 为其创建 POCO 类。

使用域类将实体框架引用与项目分开很重要,我想使用结合依赖注入的存储库模式。

问题是:

如何将实体框架 POCO 类“映射”到我现有的域类?它们具有相同的属性。我读过一些关于代理、伙伴课程等的内容,但没有找到任何好的例子。

请帮忙。


假设域模型类看起来像这样(只是一个例子):

并且数据库表具有相同的列:

Id (int, not null, 主键) Name (nvarchar(50), not null)


更新:

好的,我找到了解决方案。我做了 Ladislav Mrnka 的建议并从 ObjectContext 派生。这是一个描述它是如何完成的页面:Entity Framework 4.0 – Part4: How to use your own POCO's

0 投票
1 回答
5752 浏览

c# - 在 Database First 中更改实体和属性名称

我正在启动一个新应用程序,该应用程序必须使用现有数据库,该数据库使用一些在 .net 中非常烦人的命名约定(表名以指定表的业务域的几个三元组开头,列名以表三元组开头,三元组大写,并用下划线等分隔,)。

我想做的是编写一个简单的重命名规则(这就像找到最后一个下划线并在之后的所有内容一样简单)并将其应用到实体框架中。我真的不想在编辑器中一一编辑名称,特别是因为数据库可能会更改,我不想多次这样做。

我正在使用 Database First(因为数据库已经存在并且它是“主数据库”)和 EF 4.x DbContext Generator,它开箱即用的效果非常好(尽管类和属性命名错误)。

我编辑了 T4 模板以重命名生成的实体和属性,但是当我尝试执行任何请求时,DbContext 对象找不到与我尝试请求的实体匹配的表,并且出现此异常:

实体类型 [Entity Name] 不是当前上下文模型的一部分。

这很明显为什么它找不到表:当我动态更改它时,没有任何东西告诉它如何匹配实体名称和表。我读到我可以在OnModelCreating(DbModelBuilder modelBuilder)方法中添加指令,但这在 Database First 中没有使用(并且默认的 T4 模板在其中添加了一个异常,以防万一)。

所以现在我被卡住了,我不知道如何指定匹配。

以下是我的几个想法,但不确定它是否正确或可行:

  • 使用“复数/单数”API 更改实体名称?听起来像一个肮脏的解决方法。但它可能有效(虽然没有尝试)。
  • 寻找一种即时编辑 EDMX 文件的方法。
  • 之后编辑 EDMX,但它可能会使过程复杂化(在设计器中编辑,然后执行一个工具来改变 EDMX,然后运行自定义工具来重新生成实体和 DbContext ......而今天我只需要在设计器中进行编辑)。
  • 使用 Code First(因为通过 DbContext 类中的属性或指令使用不同的实体名称似乎比表名称更容易),但听起来与现有数据库一起使用它不会更复杂。

任何想法 ?还是我错过了什么?

0 投票
2 回答
2266 浏览

entity-framework - EF4 db-first:如何添加缺失的关系

我正在使用 db-first 为只读数据库创建对象模型,但某些关系不会自动拾取。例如在 Foo.BarId 中不会自动连接到 Bar 对象。如果单击 BarId 属性,则在上下文菜单或属性窗口中看不到任何将其与 Bar 关联的内容。我怎样才能在不搞砸任何事情的情况下手动声明外键?

0 投票
1 回答
146 浏览

asp.net-mvc - 添加到 EntitySet 不起作用

我正在尝试将对象添加到 MVC 项目中的数据库优先 ORM EntitySet。我使用这样的一段代码:

但是,SaveChanges 方法会引发由 SqlClient.SqlException 引发的 Data.UpdateException。后者说

“无法将值 NULL 插入 'ID' 列,表 'Listings.dbo.Ads';列不允许空值。INSERT 失败。语句已终止。”

我完全同意。我只是不明白为什么当我之前设置它时 ID 应该为空。有什么建议么?

谢谢,
内森

0 投票
2 回答
6240 浏览

asp.net-mvc - MVC DB first Fix display Name

我正在使用 mvc 4,首先使用数据库。

每次我刷新model.edmx文件时,我添加的显示名称属性都会被删除。如何在刷新之间保持显示名称属性?

0 投票
1 回答
1848 浏览

asp.net - 为什么 MetadataType 不在数据库优先方法中进行验证?

我使用 Database-First 生成模型类(EDMX 文件),并且我想使用“MetadataType”进行验证。我在这里阅读了解决方案,但它们对我不起作用。

这是我的代码:

这里有什么遗漏吗,或者为什么我的解决方案不起作用?

0 投票
1 回答
1446 浏览

c# - Edmx 缺少外键

我正在使用实体框架映射我的数据库,使用数据库优先的方法。

问题是edmx应该映射我的确切数据库的文件缺少表之间的一些 FK 关系,这导致我更改查询,因为我无法直接访问相关表。

当然,直接在类代码中更改它,每次我在数据库中更改某些内容时它都会被删除(edmx重新创建)。

我需要帮助!!!

0 投票
2 回答
1132 浏览

entity-framework - 使用 Database First 模型 (EF 5) 向模型添加验证

我知道如何将验证错误添加到模型状态。我知道如何将验证注释添加到我的模型类中。问题是,首先使用数据库,我不想接触生成的代码,因为当我重新生成时,我将失去我的自定义。我总是尝试在部分中进行自定义,但是您不能在部分中为现有属性添加注释。

这里的最佳做法是什么?

0 投票
1 回答
178 浏览

c# - 使用自定义get在实体框架中获取stackoverflow

我正在尝试将业务逻辑添加到我的数据库第一个实体框架应用程序中。我想将 address1 的长度限制为 35,并将其余部分移至地址。在数据库中的字段是地址 1 和地址 2,在我的 edmx 上是地址 1 和地址 2。我使用部分扩展了 edmx。但是当试图调用我的自定义 get 函数时,我得到一个异常,说当前线程在 stackoverflow 中。

调用 LimitAddressFieldTo35 时发生异常。我正在使用 .net 3.5 中包含的实体框架版本