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

c# - 实体框架 CTP4 代码优先:映射受保护的属性

我想在模型上使用延迟加载集合,但我希望通过单独的方法完成添加/删除功能。所以是这样的:

我不知道如何为此配置映射。我研究了使用配置类:EntityConfiguration。但是由于该属性受到保护,我无法弄清楚如何对其进行配置。有什么办法可以完成我在这里尝试做的事情吗?

0 投票
3 回答
495 浏览

entity-framework - EF4 Code First 中的 1 对 1 对象关系

我有一个父对象 book,该对象的属性是 publisher。每次我为一本书做广告时,它都会添加一个新的出版商,即使出版商已经存在。有人能告诉我如何添加这本书,而不是再次添加出版商,只需引用现有的吗?我正在使用的代码如下...在此先感谢!

0 投票
1 回答
5008 浏览

.net - 实体框架 4 - 代码优先和存储过程

我想使用一个参数执行存储过程,该参数使用 EF4“代码优先”返回表。出于这个目的,我可以使用一些 DTO,它不必返回实体。我试图:

a) 使用函数导入创建 edmx 文件并将其添加到我的 ObjectContext 中,如下所示:

但我InvalidOperationException说“在使用 fluent API 开始代码优先配置后,无法使用现有模型的注册。”

b) 访问下属连接并执行程序:

在哪里

但这种方法也不起作用。它抛出InvalidOperationException消息“在当前工作区中找不到为 FunctionImport 指定的容器'booklog'。”

0 投票
27 回答
254453 浏览

.net - 支持的模型数据库创建后上下文发生了变化

错误信息:

“支持 'AddressBook' 上下文的模型自创建数据库以来已更改。手动删除/更新数据库,或使用 IDatabaseInitializer 实例调用 Database.SetInitializer。例如,RecreateDatabaseIfModelChanges 策略将自动删除并重新创建数据库,并且可选择用新数据播种它。”

我正在尝试使用代码优先功能,以下是我写的:

上下文类:

和连接字符串:

因此,数据库名称是“AddressBook”,当我尝试将联系人对象添加到上下文时会发生错误。我在这里错过了什么吗?

0 投票
5 回答
6945 浏览

entity-framework-4 - Entity Framework - CTP4 - Code First - 如何关闭自动复数?

我的实体名称是“Contact”,我的表名称是“Contact”。但是,默认的复数支持使 EF4 查找名为“Contacts”的表。有人对如何关闭多元化支持有任何想法吗?

这篇文章有一些关于多元化支持的细节。但是还是没有给我答案。

我在这篇文章中看到以下文字。首先,我不知道我需要哪个物理 .tt 文件来进行此更改。另外,我只想为一个应用程序而不是所有应用程序关闭此功能。

T4 Toolbox 中的代码生成器在 Visual Studio 2010 中默认打开复数。如果您需要生成不带复数的 DAL,可能出于兼容性原因,您可以通过在之前的 .tt 文件中添加以下行来关闭此选项调用 generator.Run() 方法。

C#
generator.Pluralize = false;

VB
生成器.Pluralize = False

更新

以下是我使用的代码,我收到以下错误:-

接触

语境:-

}

主程序:-

我在“context.Contact.Add(contact);”上收到以下错误:-

System.InvalidOperationException:支持“AddressBook”上下文的模型自创建数据库以来已更改。手动删除/更新数据库,或使用 IDatabaseInitializer 实例调用 Database.SetInitializer。例如,RecreateDatabaseIfModelChanges 策略将自动删除并重新创建数据库,并可选择为其添加新数据。在 System.Data.Entity.Infrastructure.CreateDatabaseOnlyIfNotExists 1.InitializeDatabase(TContext context) at System.Data.Entity.Infrastructure.Database.Initialize() at System.Data.Entity.Internal.InternalContext.Initialize() at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) at System.Data.Entity.Internal.Linq.EfInternalQuery1.Initialize() 在System.Data.Entity.DbSet 1.Add 1.ActOnSet(Action action,EntityState newState, TEntity entity) at System.Data.Entity.DbSet(TEntity entity) 在 CodeFirst.Client.Program.Main(String[] args) 在 E:\Ashish\ Research\VS Solutions\EntityFramework\CodeFirstApproach_EF_CTP4\CodeFirst.Client\Program.cs:line 35

我确定我在某个地方犯了一个愚蠢的错误,只是无法弄清楚。有人可以提供一些方向吗?

回答 在 Pault 的帮助下,我在这里描述了这个问题和解决方案。

0 投票
1 回答
5739 浏览

c# - Entity Framework 4 Code-First 多对多插入

我在数据库层使用代码优先模式。

我有两个 POCO 课程:

然后我有数据上下文类:

我有一个“存储库”类:

当我调用这个 OrderRepository.Save 方法时,我得到一个错误:一个实体对象不能被多个 IEntityChangeTracker 实例引用。

在数据库中,我有一个表 Items、Orders 和 Items_Orders ...我为这个错误和 EF 多对多保存进行了很多搜索,但我没有找到任何有用的东西来帮助我,因为我不能t 找到代码优先原则的示例。

谢谢!

0 投票
1 回答
635 浏览

entity-framework - EF4 CodeFirst CTP4 - 插入现有关联

如果我有一个具有关联的实体(例如 Book.Publisher),我如何保存新书并将其与现有出版商关联?

顺便说一句,我不想​​在我的模型中公开 FK 关联(即 PublisherId)。

我一直在使用这样的东西:

但这只是试图添加一个新的发布者。

我看到了这个建议使用 ObjectStateManager.ChangeObjectState 的问题,但如果我尝试这个,我会得到一个错误 - ObjectStateManager 不包含一个 ObjectStateEntry,它引用了一个“Blah.Publisher”类型的对象。

0 投票
5 回答
449 浏览

c# - 有什么更好的设计/实践:可空属性或 1 个值属性和 1 个布尔“具有”属性?

我正在开发一个 ASP.NET MVC 应用程序,设计域模型,使用(测试)新的 EF Code First 功能。

我有一个可能有也可能没有截止日期的活动实体,处理它的最佳方法是什么?

1 个属性:

或者

2个属性:

起初我想到了第一个选项,但后来我开始认为,关于数据库,第二个选项可能会更好......

有没有这方面的最佳实践?

0 投票
1 回答
7993 浏览

linq-to-entities - 实体框架代码优先 - 急切加载未按预期工作?

我有以下实体框架 POCO 类:

问题是,当我返回时,我ICollection<Order>得到了Orders 好的,但没有填充的OrderType属性。Order我的订单将包含以下详细信息:

我的映射代码如下所示:

然后我在我的上下文中禁用了延迟加载:

因此,要返回存储库中的数据,我使用以下Include方法System.Data.Entity

我假设因为我无法指定Orders.OrderType,这就是问题所在,所以我尝试了一些变化:

但是我永远无法返回 OrderType 属性,除非我直接加载 Order:

此代码将正确返回订单中的 OrderType。

0 投票
1 回答
2084 浏览

linq-to-entities - 实体框架 - 通过集合导航和包含属性

我刚刚度过了一个巨大的*金发时刻**,但它突出了我对 Entity Framework 的烦恼。我禁用了延迟加载,所以我强迫自己真正考虑我需要哪些数据才能使应用程序尽可能快。

因此,为了在查询中返回数据,我需要使用以下Include方法:

这很好,直到我想选择一个更深入层次结构的项目。IE:

据我所知,急切返回所有这些数据的唯一方法是执行以下操作:

有了上述内容,我无法System.Data.Entity按照我的第一个示例使用 Lambda。有谁知道我是否在这里遗漏了一些明显的东西,或者我是否坚持通过集合为我的导航属性使用字符串声明?

如果我没有任何收藏,我可以写:

但是由于Orders收集,据我所知,没有办法进入子属性(FirstOrDefault,SingleOrDefault等,不工作)。


**这只是一个转折点,我碰巧很喜欢金发女郎*