问题标签 [ef-code-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 投票
4 回答
8366 浏览

c# - 使用实体框架 Fluent Api 映射 System.Uri

很简单的问题。我有一个模型,它的属性是一种System.Uri类型。 Uris 没有默认的无参数构造函数,也没有 ID 字段。有什么方法可以覆盖我的模型生成,以自定义方式将其存储在数据库中(例如,作为 a string)?在 NHibernate 中,我以前通过实现来完成此操作IUserType,但我在 CodeFirst 中找不到类似的机制。

显然,我可以创建一个Uri在底层使用 a 并公开常规可映射属性和构造函数的自定义类型,我只是好奇是否有任何方法可以映射此系统类型,这样我就不必制作这样的包装器。

0 投票
3 回答
1147 浏览

.net - 不生成数据库但映射到现有表

我们想首先使用模型为我们的应用程序生成干净的 EF 模型,但我们不想让模型生成新的数据库模式,然后我们想手动在实体中执行表映射到现有的数据库表或表。有这种机制吗?

0 投票
1 回答
1237 浏览

entity-framework - 实体框架代码优先 - 单一类的多对多

我有一个导航菜单提供程序,我正在尝试使用 MenuItem 对象移动到 EF Code First(EF4、CPT5)。与其他任何事情相比,这更像是一种练习,以适应与 EF Code First 建立不同的关系。

我的 MenuItem 有一个名为 SubMenuItems 的字段,它是 MenuItems 的集合。当我使用 EF Code First(不修改类)时,为 MenuItems 创建的表会为父菜单项添加一列。菜单将正确显示,但这消除了使菜单项出现在多个子菜单中的任何能力。告诉 EF Code First 我希望每个 MenuItem 成为独立项并创建另一个将菜单项的 SubMenuItems 链接到其他 MenuItems 的表的正确方法是什么?

我试图覆盖 OnModelCreating,但每次尝试都以被破坏或做与我没有接触 OnModelCreating 的情况完全相同的事情告终。我确定我只是“做错了”。

谢谢!

0 投票
1 回答
12703 浏览

entity-framework - EF 代码第一个无效列名“CategoryCategoryID”

有一个名为 Northwind 的现有数据库和一个 webform 应用程序。运行应用程序时出现错误:“无效的列名 CategoryCategoryID”。任何人帮助我?提前致谢!!

类别.cs:

产品.cs:

北风.cs

产品.aspx

0 投票
2 回答
1429 浏览

.net - 实体框架 CTP5 代码优先:将一个类与另一个类的多个集合映射

使用 EF CTP5 Code-First,我试图映射一个类模型,该模型包含一个类中的多个集合,指向另一个类。这是我的意思的一个例子:

如果我让数据库从此模型创建DbContext而无需进一步定制,如下所示:

...然后我在 SQL Server 中得到两个表,一个Companies只有一CompanyId列的简单表和一个People包含以下列的表(“FKRN”表示“外键关系名称”,由 EF 在 SQL Server 中创建):

CompanyId最后三列与表的主键都有外键关系Companies

现在我有几个问题:

  • 1)为什么我在表中得到三个外键列People?我实际上期望两个。如果我public Company Company { get; set; }Person第三列中删除属性CompanyCompanyId2会消失,但我也会丢失类中的引用属性。

  • 2)假设我Company从表中删除了属性Person(我的模型中并不需要它)。有没有办法给剩下的两个外键列另一个名称而不是自动创建的CompanyCompanyIdand CompanyCompanyId1?(例如FCompanyIdandMCompanyId表示与FemaleEmployeesMaleEmployees集合的关系。)

  • 3) 有没有办法用表CompanyId中的一个外键来定义这个模型People?当然,我需要在Person类中添加一个与众不同的列(如bool IsFemale)。Person 要么是集合的一部分,要么FemaleEmployeesMaleEmployees集合的一部分,从不在两者中(在这个例子中很自然),所以使用 SQL 我可以通过类似WHERE IsFemale = true/false AND CompanyId = 1. 我想知道是否可以给 EntityFramework 提示以这种方式加载两个集合。(在这里我想避免通过一个FemalePersonMalePerson类来扩展模型,这两个类都派生自Person作为基类,然后使用例如 Table-Per-Hierarchy 映射,因为这些派生类将是空的和人为的,除了启用到 SQL Server 的映射之外没有其他目的。)只有一个外键可以让CompanyId我做到non-nullable使用两个外键是不可能的(在同一行中两者都不能是非空的)。

提前感谢您的反馈和建议!

0 投票
2 回答
6942 浏览

wpf - 实体框架 CTP5 代码优先,WPF - MVVM 建模

我已经为我的 WPF 应用程序设置了所有模型,并首先使用实体​​框架 ctp5 代码,这是一个示例模型类:

构建我的视图模型的推荐方法是什么?我的视图模型将实现 INotifyPropertyChanged,我不希望模型类具有任何特定于 UI 的代码 - 这样它们就可以在其他应用程序中轻松重用。我应该将所有模型属性设为虚拟然后在视图模型中覆盖它们吗?(似乎有很多不必要的编码......) EF 代码首先会与这种类型的格式搭配得很好吗?

编辑 这是一个有点类似的问题在 MVVM 中 ViewModel 或 Model 是否应该实现 INotifyPropertyChanged? 但是,唯一的解决方案似乎是将我认为是 UI 逻辑的内容添加到模型中。也许我可以向模型添加某种委托并从视图模型中挂钩,这将反过来使用 INotifyPropertyChanged... 像这样的东西?

0 投票
1 回答
374 浏览

ef-code-first - 代码第一个 CTP5 错误信息

我使用代码优先 CTP5 设置的新项目收到以下错误消息。在网上找不到任何关于它的信息。有没有人遇到过这个错误信息?

创建模型时不能使用上下文。

第一次调用我的数据库上下文时会发生这种情况(下面的代码):

此时数据库尚未创建。我有一个DropCreateDatabaseIfModelChanges在 app_start 中设置的数据库初始化程序。

0 投票
3 回答
1791 浏览

entity-framework - 无法删除具有多对多关系的对象

这些是我的简化实体:

问题是连接表引用了用户表,并且 ef 在删除用户之前没有从连接表中删除记录

我尝试编写测试用例,我注意到:

如果使用相同的上下文来添加具有角色的用户,保存更改,删除并再次保存更改它可以工作

但是如果我使用 2 个不同的上下文,一个用于插入,另一个用于删除,我会收到此错误

0 投票
1 回答
1332 浏览

entity-framework - 实体框架 CTP5(代码优先)建模 - 查找表

假设如下表结构:

表:

分配表将任务与分配给它的资源相关联。是否可以将此结构与模型构建器进行映射,这样我就不必创建一个 Assignment poco 类 - 隐藏一些底层数据结构?

IE:

如何在不创建分配 poco 类的情况下使用模型构建器将任务映射到资源?

0 投票
1 回答
3893 浏览

entity-framework - 仅 EF POCO 代码 VS 带有实体数据模型的 EF POCO

将域对象与任何类型的持久性代码完全分离的能力使系统更具可扩展性和可维护性。当业务逻辑可以与存储代码分开测试时,测试变得更加容易。将 POCO 与实体框架 (EF) 一起使用绝对是朝着正确方向迈出的一步 :)

使用 EF 有两种类型的 poco 1.使用实体设计器 2.仅使用代码

哪个是最好的方法 EF poco code first 或 EF Poco 使用实体数据模型设计器?

谢谢