问题标签 [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.
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 字段定义时,一切正常。但这在我们的例子中是不可能的,因为对于每个表,我们都有不同的主键字段名称。
我不知道方法和我错在哪里!请帮我!!!
c# - EF 代码优先 - 复合键
我有一个旧数据库,它有两个列,我想将它们映射为 1 个 ID,这可能吗
例如
然后我的 Modelbinder 看起来像这样
我需要的是映射中的 ProductID = ShortDescription + UserName ...因为这两个列共享一个唯一的键约束...
不知道这是否有意义,但任何建议都会很棒......请不要询问数据库设计=>这就像它一样,不应该改变......这就是为什么我认为 EF 代码优先可以帮助我(希望交叉手指)......因为看起来数据库没有定义 pk 只是唯一的键约束......
无论如何...帮助会很棒..
entity-framework - Code First 实体配置 ToTable 问题
如果我像这样ToTable
在OnModelCreating
覆盖中指定:
它创建dbo.my_teams
,但是如果我将它分成如下类:
它创建dbo.Teams
. 任何想法为什么?
entity-framework - EF4 纯代码 CTP 中的关系映射(使用继承时?)
我正在使用带有代码优先 CTP 功能的 EF4 生成一个简单的复合图案实体模型:
在我拆分原始/集合派生类之前,它都运行良好,但现在我明白了:
我认为它可能会变得混乱,所以我想我会使用流畅的界面而不是 DataAnnotation 属性来明确地拼出它。这是我认为正确定义关系的内容:
但我一定是错的,因为现在我明白了:
使用 fluent API 的各种其他方式会产生不同的错误,但没有成功,所以我开始怀疑在使用继承时是否需要以不同的方式完成这些。
任何线索、链接、想法、指导都将受到欢迎。
c# - 在 CTP4 Code First EF4 功能中查询后导航属性 Null
我刚开始玩 CTP4 和 Code-First。我对可能的约会网站进行了以下设置:
现在,该框架可以很好地使用所有正确的键创建数据库。现在我插入了一些虚拟数据并启动了以下查询:
该查询确实返回了正确的投票实体,但投票对象的两个用户属性为空。框架不应该使用投票表中引用的用户的外键填充这些属性吗?
many-to-many - 使用 EF4 CTP4 代码优先方法生成的多对多表中的命名约定
给定以下 POCO 类:
使用 EF4 CTP4 代码优先方法创建数据库模型确实会创建所需的联结表:
但是,表名和列名并不理想,因为它们是从关联的类属性名生成的。我宁愿有:
有谁知道在这种情况下是否可以更改生成的列名,并且可以选择更改表名,以便员工在认证之前?
谢谢,加里
entity-framework - 在 EF4 Code first Collection 中不是延迟加载吗?
使用 Microsoft Visual C# 2010 Express,实体框架功能 CTP4。
根据Scott Gu 的博客,我首先使用代码尝试了 EF4 。但是在检索实体时似乎没有初始化集合。将产品添加到类别时出现空引用异常。在我见过的所有示例中,集合从未显式初始化。我错过了什么?
这是我的代码:
entity-framework-4 - EF4 代码仅 TPH 更改对象类型
我正在尝试仅使用 EF4 代码来解决问题。如果我使用 TPH 并且我想将保存的人员更改为讲师,反之亦然,我将如何完成此操作。我的 POCO 课程:
假设我有一个人:
后来我想让这个人成为管理员。我将如何做到这一点。
以下将更改 HireDate 列,但我的鉴别器字段 PersonCategory 仍为 0。因此,就 EF 而言,它仍然不是 Admin 类型
entity-framework - Entity Framework 4 Code First - 更改为 null 时虚拟属性不更新
所以我在我的领域中有一个类似于这个的模型:
然后在一个网络表单项目中,我像这样更新它:
但这并没有更新product.Methodology
之前设置为对象的时间,我想将其更改为空。即这product.Methodology = null;
条线似乎没有按预期工作。
当我在调试器中运行它时,我发现有时它会工作,有时它不会。经过少量的拉扯,我意识到这是由于实体框架在运行时为该属性创建的代理类型,当我在调试器中检查它时它正在工作。
所以为了解决这个问题,我创建了这个效果很好的黑客:(注意:现在是一个else if
)
所以我想我的问题是:
- 难道我做错了什么?
- 有没有另一种方法可以记住每次都做一次黑客攻击?
- 会不会算是实体框架代码先CTP的bug?
干杯,
查尔斯
.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 方法来映射关系:
我不确定这是否是最优雅的方法,或者这是否最终会给我带来任何问题,但它现在正在工作。