问题标签 [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.
c# - 实体框架 CTP4 代码优先:映射受保护的属性
我想在模型上使用延迟加载集合,但我希望通过单独的方法完成添加/删除功能。所以是这样的:
我不知道如何为此配置映射。我研究了使用配置类:EntityConfiguration。但是由于该属性受到保护,我无法弄清楚如何对其进行配置。有什么办法可以完成我在这里尝试做的事情吗?
entity-framework - EF4 Code First 中的 1 对 1 对象关系
我有一个父对象 book,该对象的属性是 publisher。每次我为一本书做广告时,它都会添加一个新的出版商,即使出版商已经存在。有人能告诉我如何添加这本书,而不是再次添加出版商,只需引用现有的吗?我正在使用的代码如下...在此先感谢!
.net - 实体框架 4 - 代码优先和存储过程
我想使用一个参数执行存储过程,该参数使用 EF4“代码优先”返回表。出于这个目的,我可以使用一些 DTO,它不必返回实体。我试图:
a) 使用函数导入创建 edmx 文件并将其添加到我的 ObjectContext 中,如下所示:
但我InvalidOperationException
说“在使用 fluent API 开始代码优先配置后,无法使用现有模型的注册。”
b) 访问下属连接并执行程序:
在哪里
但这种方法也不起作用。它抛出InvalidOperationException
消息“在当前工作区中找不到为 FunctionImport 指定的容器'booklog'。”
.net - 支持的模型数据库创建后上下文发生了变化
错误信息:
“支持 'AddressBook' 上下文的模型自创建数据库以来已更改。手动删除/更新数据库,或使用 IDatabaseInitializer 实例调用 Database.SetInitializer。例如,RecreateDatabaseIfModelChanges 策略将自动删除并重新创建数据库,并且可选择用新数据播种它。”
我正在尝试使用代码优先功能,以下是我写的:
上下文类:
和连接字符串:
因此,数据库名称是“AddressBook”,当我尝试将联系人对象添加到上下文时会发生错误。我在这里错过了什么吗?
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.EfInternalQuery
1.Initialize() 在System.Data.Entity.DbSet 1.Add1.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 的帮助下,我在这里描述了这个问题和解决方案。
c# - Entity Framework 4 Code-First 多对多插入
我在数据库层使用代码优先模式。
我有两个 POCO 课程:
和
然后我有数据上下文类:
我有一个“存储库”类:
当我调用这个 OrderRepository.Save 方法时,我得到一个错误:一个实体对象不能被多个 IEntityChangeTracker 实例引用。
在数据库中,我有一个表 Items、Orders 和 Items_Orders ...我为这个错误和 EF 多对多保存进行了很多搜索,但我没有找到任何有用的东西来帮助我,因为我不能t 找到代码优先原则的示例。
谢谢!
entity-framework - EF4 CodeFirst CTP4 - 插入现有关联
如果我有一个具有关联的实体(例如 Book.Publisher),我如何保存新书并将其与现有出版商关联?
顺便说一句,我不想在我的模型中公开 FK 关联(即 PublisherId)。
我一直在使用这样的东西:
但这只是试图添加一个新的发布者。
我看到了这个建议使用 ObjectStateManager.ChangeObjectState 的问题,但如果我尝试这个,我会得到一个错误 - ObjectStateManager 不包含一个 ObjectStateEntry,它引用了一个“Blah.Publisher”类型的对象。
c# - 有什么更好的设计/实践:可空属性或 1 个值属性和 1 个布尔“具有”属性?
我正在开发一个 ASP.NET MVC 应用程序,设计域模型,使用(测试)新的 EF Code First 功能。
我有一个可能有也可能没有截止日期的活动实体,处理它的最佳方法是什么?
1 个属性:
或者
2个属性:
起初我想到了第一个选项,但后来我开始认为,关于数据库,第二个选项可能会更好......
有没有这方面的最佳实践?
linq-to-entities - 实体框架代码优先 - 急切加载未按预期工作?
我有以下实体框架 POCO 类:
问题是,当我返回时,我ICollection<Order>
得到了Order
s 好的,但没有填充的OrderType
属性。Order
我的订单将包含以下详细信息:
我的映射代码如下所示:
然后我在我的上下文中禁用了延迟加载:
因此,要返回存储库中的数据,我使用以下Include
方法System.Data.Entity
:
我假设因为我无法指定Orders.OrderType
,这就是问题所在,所以我尝试了一些变化:
但是我永远无法返回 OrderType 属性,除非我直接加载 Order:
此代码将正确返回订单中的 OrderType。
linq-to-entities - 实体框架 - 通过集合导航和包含属性
我刚刚度过了一个巨大的*金发时刻**,但它突出了我对 Entity Framework 的烦恼。我禁用了延迟加载,所以我强迫自己真正考虑我需要哪些数据才能使应用程序尽可能快。
因此,为了在查询中返回数据,我需要使用以下Include
方法:
这很好,直到我想选择一个更深入层次结构的项目。IE:
据我所知,急切返回所有这些数据的唯一方法是执行以下操作:
有了上述内容,我无法System.Data.Entity
按照我的第一个示例使用 Lambda。有谁知道我是否在这里遗漏了一些明显的东西,或者我是否坚持通过集合为我的导航属性使用字符串声明?
如果我没有任何收藏,我可以写:
但是由于Orders
收集,据我所知,没有办法进入子属性(FirstOrDefault
,SingleOrDefault
等,不工作)。
**这只是一个转折点,我碰巧很喜欢金发女郎*