问题标签 [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 投票
1 回答
899 浏览

entity-framework - BaseEntity 中的实体框架 CTP4 非标准主键名称使用

我已经为解决我的主键使用问题而苦苦挣扎了好几天。请有人帮我解决这个难题!!!

我正在使用带有 CTP4 的实体框架,使用 Code First 方法。我为我的项目采用了由 Huyrua 发布的存储库模式,请参见此处。我对这种模式非常满意,尤其是对 CTP4 的可能性。

对于实体定义,我们使用了几个嵌套层。在最底部,我们有 BaseEntity,它包含一些通用字段,例如:

然后我们从这个类中派生出我们的具体实体,例如:

笔记!我们有一个关键区别 - 数据库表主键名称不是“Id”!我们正在使用模式 PK_。出于这个原因,我们不在 BaseEntity 中包含 PK 字段定义。此外,我们使用 useEntityConfiguration来映射我们的非约定主键:

在这里我们遇到了问题。当我尝试使用 Person 实体时,出现错误'Unable to infer a key for entity type 'KDC.Model.Entities.BaseEntity''。似乎 ObjectContext 需要在基类中定义主键。因为,当出于实验目的我在 BaseEntity 中移动 PK 字段定义时,一切正常。但这在我们的例子中是不可能的,因为对于每个表,我们都有不同的主键字段名称。

我不知道方法和我错在哪里!请帮我!!!

0 投票
2 回答
7138 浏览

c# - EF 代码优先 - 复合键

我有一个旧数据库,它有两个列,我想将它们映射为 1 个 ID,这可能吗

例如

然后我的 Modelbinder 看起来像这样

我需要的是映射中的 ProductID = ShortDescription + UserName ...因为这两个列共享一个唯一的键约束...

不知道这是否有意义,但任何建议都会很棒......请不要询问数据库设计=>这就像它一样,不应该改变......这就是为什么我认为 EF 代码优先可以帮助我(希望交叉手指)......因为看起来数据库没有定义 pk 只是唯一的键约束......

无论如何...帮助会很棒..

0 投票
1 回答
3048 浏览

entity-framework - Code First 实体配置 ToTable 问题

如果我像这样ToTableOnModelCreating覆盖中指定:

它创建dbo.my_teams,但是如果我将它分成如下类:

它创建dbo.Teams. 任何想法为什么?

0 投票
1 回答
1241 浏览

entity-framework - EF4 纯代码 CTP 中的关系映射(使用继承时?)

我正在使用带有代码优先 CTP 功能的 EF4 生成一个简单的复合图案实体模型:

在我拆分原始/集合派生类之前,它都运行良好,但现在我明白了:

我认为它可能会变得混乱,所以我想我会使用流畅的界面而不是 DataAnnotation 属性来明确地拼出它。这是我认为正确定义关系的内容:

但我一定是错的,因为现在我明白了:

使用 fluent API 的各种其他方式会产生不同的错误,但没有成功,所以我开始怀疑在使用继承时是否需要以不同的方式完成这些。

任何线索、链接、想法、指导都将受到欢迎。

0 投票
2 回答
1874 浏览

c# - 在 CTP4 Code First EF4 功能中查询后导航属性 Null

我刚开始玩 CTP4 和 Code-First。我对可能的约会网站进行了以下设置:

现在,该框架可以很好地使用所有正确的键创建数据库。现在我插入了一些虚拟数据并启动了以下查询:

该查询确实返回了正确的投票实体,但投票对象的两个用户属性为空。框架不应该使用投票表中引用的用户的外键填充这些属性吗?

0 投票
2 回答
2012 浏览

many-to-many - 使用 EF4 CTP4 代码优先方法生成的多对多表中的命名约定

给定以下 POCO 类:

使用 EF4 CTP4 代码优先方法创建数据库模型确实会创建所需的联结表:

但是,表名和列名并不理想,因为它们是从关联的类属性名生成的。我宁愿有:

有谁知道在这种情况下是否可以更改生成的列名,并且可以选择更改表名,以便员工在认证之前?

谢谢,加里

0 投票
2 回答
2551 浏览

entity-framework - 在 EF4 Code first Collection 中不是延迟加载吗?

使用 Microsoft Visual C# 2010 Express,实体框架功能 CTP4。

根据Scott Gu 的博客,我首先使用代码尝试了 EF4 。但是在检索实体时似乎没有初始化集合。将产品添加到类别时出现空引用异常。在我见过的所有示例中,集合从未显式初始化。我错过了什么?

这是我的代码:

0 投票
1 回答
525 浏览

entity-framework-4 - EF4 代码仅 TPH 更改对象类型

我正在尝试仅使用 EF4 代码来解决问题。如果我使用 TPH 并且我想将保存的人员更改为讲师,反之亦然,我将如何完成此操作。我的 POCO 课程:

假设我有一个人:

后来我想让这个人成为管理员。我将如何做到这一点。

以下将更改 HireDate 列,但我的鉴别器字段 PersonCategory 仍为 0。因此,就 EF 而言,它仍然不是 Admin 类型

0 投票
0 回答
954 浏览

entity-framework - Entity Framework 4 Code First - 更改为 null 时虚拟属性不更新

所以我在我的领域中有一个类似于这个的模型:

然后在一个网络表单项目中,我像这样更新它:

但这并没有更新product.Methodology之前设置为对象的时间,我想将其更改为空。即这product.Methodology = null;条线似乎没有按预期工作。

当我在调试器中运行它时,我发现有时它会工作,有时它不会。经过少量的拉扯,我意识到这是由于实体框架在运行时为该属性创建的代理类型,当我在调试器中检查它时它正在工作。

所以为了解决这个问题,我创建了这个效果很好的黑客:(注意:现在是一个else if

所以我想我的问题是:

  • 难道我做错了什么?
  • 有没有另一种方法可以记住每次都做一次黑客攻击?
  • 会不会算是实体框架代码先CTP的bug?

干杯,
查尔斯

0 投票
1 回答
625 浏览

.net - Entity Framework 4 CTP 4 Code First:如何使用非常规的主键和外键名称

Entity Framework 4 中是否有办法(如果重要,使用 CTP4 和 Code First)来更改用于自动识别主键和外键的约定?我正在尝试将 EF 与使用“pk/fk”前缀而不是“id”后缀来标记键的旧数据库一起使用。此外,一个地址表有多个外键也很常见,例如,称为“fkAddressHome”和“fkAddressWork”。

我更喜欢一种以系统方式更改此行为的方法,这样我就不必为每个表指定这些更改。我研究了在 OnModelCreating 方法中覆盖列名的选项,但令人失望的是,如果您以这种方式添加一列,那么您必须将它们全部添加。这违反了我的 DRY 敏感性。

但是,任何解决方案都将不胜感激。EF4,尤其是 CTP4 的 Code First 增强功能,非常非常好。我期待看到下一个版本的 EF 还能带来什么。谢谢您的帮助。

更新

我能够通过将以下内容添加到我的 OnModelCreating 方法来映射关系:

我不确定这是否是最优雅的方法,或者这是否最终会给我带来任何问题,但它现在正在工作。