问题标签 [ef-model-builder]
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.
asp.net - 模型生成器再添加一列?
我首先使用 EF 代码。
这是我的模型师
和状态类:
和市场类:
当然,我删除了额外的代码。
问题是当我使用此代码时,State_StateId 列会添加到数据库中的我的 Market 表中,并且当我不使用模型构建器时,消息循环代码发生错误并且......(我说我删除了额外的代码),所以怎么能我首先使用没有这个“State_StateId”额外列的代码。
请原谅我的英文写作不好。
entity-framework - 无法将 DbModelBuilder 和 .HasRequired() 添加到 modelBuilder
我正在尝试在我的 API 中创建模型构建器,但似乎无法添加.HasRequired()
到我的代码中。我假设这是因为它存在于内部DBModelBuilder
,但是,我也不能添加。
它只允许我使用ModelBuilder
. 否则会抛出错误:OnModelCreating(DbModelBuilder): no suitable method found to override
我在这里错过了什么吗?
我的 DbContext 看起来像这样:
更新
我(作为测试)从头开始了一个新项目。我使用 Web API 模板创建了一个新的 ASP.NET 5.0 项目。我的项目立即无法识别DbModelBuilder
。我添加了对 EntityFramework.dll 的引用,但仍然没有好处。然后我添加using System.Data.Entity;
并接受DbModelBuilder
,但仍然抱怨找不到命名空间“DbModelBuilder”。
我不明白我怎么能在一个全新的项目中预先出现这个错误?
一旦我尝试从 NuGet 添加包 Entity Framework,我就会收到更多错误,即版本 6.1.3 与 DNX Core 5.0 不兼容
我似乎找不到任何这些错误的示例/解决方案。
更新 2
我现在设法通过将 EntityFramework.dll 引用添加到 DNX Core 5.0 程序集以及 DNX 4.5.1 程序集来识别 DbModelBuilder,但是,现在它已经引发了更多错误,需要添加 System.Core 和 mscorlib。我真的不敢相信创建一个(我认为很简单的)Web API 项目有多么麻烦。
foreign-keys - EF6 Code First Composite Primary AND Foreign Keys:必须映射外键
好吧,在一个早上把我的头撞在墙上之后,我把它扔在那里了。
我有一个带有复合 PK(Column1、Column2、Column3)的 DB 表(Table1)。(Column1,Column3) 也是另一个表 (Table2) 的 FK。
尝试使用 Code First EF6 (6.1.3),这是模型:
我的模型构建器(流利的 API):
也许我在 Object2 中缺少 ICollection 的东西?
我收到一条错误消息,提示“从表 Object1 (Column1, Column3) 到表 Object2 (Column1, Column3):: Insufficient mapping: Foreign key must be mapped to some AssociationSet 或 EntitySets 参与外键关联概念方面。”
我试过了:
无济于事。我收到“在 Object2 上声明的 FirstObjects 已配置有冲突的外键”错误。
这是从现有数据库生成的 CodeFirst。
c# - 实现 EntityTypeConfiguration 类后可以使用 ASP.NET MVC + EF 脚手架吗?
背景
当模型使用数据注释或内部的直线OnModelCreating(DbModelBuilder)
来描述它们的特征时,用于绑定到实体框架的新 ASP.NET MVC 控制器的 Visual Studio 脚手架可以很好地工作。
问题
但是,在我们的场景中,使用单个类OnModelCreating
重构的内容。EntityTypeConfiguration<T>
尝试通过 MVC+EF 脚手架创建新控制器时,会出现以下弹出错误:
运行所选代码生成器时出错:“已添加 SomeModelClass 类型的配置。要引用现有配置,请使用
Entity<T>()
orComplexType<T>()
方法。
是否有修复(例如自定义代码或项目配置)?
c# - EF6 根据包含类的属性设置属性的 MaxLength
情况:
我有一个基类Lookup,如下:
我还创建了一个属性IsLookup:
目标是能够创建以下声明:
...并用于OnModelCreating
将MaxLength
属性 Description 设置为 40。
我已经能够编写一些看起来应该可以工作的东西,并且add-migration
运行得很好,但是生成的迁移没有设置 maxlength:
结果是:
所以,问题是......为什么描述没有在迁移代码中设置它的长度?这甚至可能吗?
<gripe>
如果有调试的方法add-migration
,这会容易得多。</gripe>
entity-framework-core - EF7 属性生成器中的 `Has...` 和 `ForSqlServerHas...` 扩展方法有什么区别?
Entity Framework 7(Entity Framework Core)在PropertyBuilder
. 第一个似乎是“通用”集:
- HasDefaultValueSql
- 有列名
- HasColumnType
- HasComputedColumnSql
- 有默认值
然后是“ForSqlServer”的匹配集:
- ForSqlServerHasDefaultValueSql
- ForSqlServerHasColumnName
- ForSqlServerHasColumnType
- ForSqlServerHasComputedColumnSql
- ForSqlServerHasDefaultValue
似乎还有一种额外的“ForSqlServer”扩展方法没有“通用”对应物:
- ForSqlServerUseSequenceHiLo
两组之间有什么区别,我什么时候使用哪一组?
entity-framework - 请参见 通过 modelBuilder 创建数据库查询
目前我正在一个项目中工作,该项目需要向后兼容(非 EF)数据库,但也想从模型创建一个新数据库。
对于此任务,我将当前架构保存在某处(以 XML 形式)并使用原始 sql 更新步骤更新数据库,直到它们与架构匹配,这工作正常。
此外,modelBuilder 与当前模式匹配(如,我的算法发现 context.Database.Create() 新创建的数据库与我保存的模式之间没有区别)。
由于架构很可能在开发的后期阶段发生变化,因此我必须支持两种创建最新数据库的方法,并且想知道是否可以将这两种方式结合起来 - 因为现在我必须更新保存的目标架构,创建更新步骤并更新我的模型构建器,以便准确创建我需要的数据库——这将是一项相当乏味的任务。
因此,由于可能无法将我的模式“翻译”为 modelBuilder 条目,并且因为我的 POCO 类中有更多未映射的信息(这禁止更新正确的数据库并首先更新我的类数据库的方法)唯一的(对me) 方法是以某种方式收集 CREATE TABLE 语句,当我调用 Database.Create() 时,上下文将创建它,我可以使用它来更新我的模式和相应的更新步骤。
我很确定我可以通过在调用 Create() 方法时记录上下文来做同样的事情,但是 - 这需要相当长的时间,会发出一些我不需要的查询,并且会创建一个我必须摆脱的转储数据库之后每次我更新我的模型。
所以我想知道是否有一种方法可以检查模型构建器(当然也可以是上下文),并以某种方式查看表映射到的样子。
entity-framework - 对实现接口的所有类型都有特定的属性配置,除了一个
我有许多从接口“IEventReportElement”继承的类型,它公开了属性“IdEventReport”:
这是一个可为空的属性,因为我并不总是能够立即正确填写它,但在数据库中不应为空。
这就是我添加该行的原因
到我在 DbContext 中的 OnModelCreating 方法。
但是,“位置”类型必须实现此接口,但不应在数据库中具有属性“IdEventReport”的列,而是它公开的属性“IdParent”的列。
和模型构建器中的部分
但是,这在尝试创建数据库时已经引发了异常:
System.InvalidOperationException:属性“IdEventReport”不是“Position”类型的声明属性。使用 Ignore 方法或 NotMappedAttribute 数据注释验证该属性是否已从模型中显式排除。确保它是有效的原始属性。
尽管这可能是有效的,但是否无法覆盖特定类型的给定类型配置?我是否必须将 .IsRequired() 行添加到实现此接口的所有其他类型,或者是否有其他方法可以克服这个问题?
c# - 一对零...一种关系
我似乎无法正确理解 Foo和Bar之间的关系。
有了这个结构,我通常会有
在 Foo 中,但在这种情况下,这不是我的数据的可行表示。
你看....
Foo并不总是有一个Bar ...但是... Bar总是有一个Foo并且它的 FooId 在Bar中总是唯一的。
我已经尝试过多次尝试定义这种关系,但似乎无法做到正确!如果这将使我能够做我想做的事(但我不希望这样做),我也可以向 Foo 添加一个可为空的 BarId。(见编辑1)
我已经用谷歌搜索了很多(并搜索并尝试了),许多类似(但不相同)的堆栈溢出帖子。
任何输入将不胜感激。
谢谢
编辑1(回应消费者评论):
这些表已经存在于许多实时环境中并且充满了数据,所以我想在不编辑 db 表定义的情况下找到一个解决方案......但如果这不可能,我可以添加一个列来实现我需要的。
以前我把它定义为...
...但这不适用于我使用这些表编写的一段代码。
编辑2:
当我尝试添加 Bar 时,上面的代码给出了以下错误。
“当 IDENTITY_INSERT 设置为 OFF 时,无法为表 'Bar' 中的标识列插入显式值。”
身份插入未关闭,我将它用于所有表,除非在这种情况下,EF 似乎根据我对这些表的定义将其关闭。
c# - EF Core:同时使用 ID 作为主键和外键
我有两个实体,Prospect
并且Person
,我想要做的是Prospect.ID
用作表上的主键Prospect
和外键PersonID
,我的想法是对两个实体使用相同的 ID,而不需要PersonID
在我的Prospect
实体上使用 a。PersonID
当潜在客户保存在数据库中时,即使我的实体上没有此属性,它也会尝试保存一个Prospect
,我想知道 EF 核心是否支持这种关系。
这是我在模型构建器上得到的:
这是在数据库上执行的内容:
PersonDto
:
ProspectDto
:
DtoBase
:
谢谢。