问题标签 [ef-code-first-mapping]
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# - EF6 表拆分和异常“ReferentialConstraint 中的依赖属性映射到存储生成的列。列:'Id'。”
一段时间以来,我在我的领域设计中一直遵循Object Calisthenics中的“First Class Collections”规则。不过,为了避免创建无用的“集合”表,我使用了实体框架中的表拆分配置。
但是,如果出于某种原因,我有一个Parent
除了其 Id 和子集合之外没有属性的类,我会得到异常:
InvalidOperationException:ReferentialConstraint 中的依赖属性映射到存储生成的列。列:'Id'。
奇怪的是数据库创建正确,我可以从中查询,但无法保存。
如果我只是简单地在 中添加另一个属性Parent
,问题就消失了,这就更奇怪了。
我把它缩小到一个非常简单的测试用例:
程序.cs
领域
语境
配置
entity-framework-core - 没有关系的 EF Core 导航属性(外键)
我有三个班
现在我想创建导航属性:
- 国家的名字
- 语言.名称
- 姓名.语言
- 名称.国家
我想这样做有很多原因,其中之一是在一个表中搜索所有名称而不加入。
请不要建议其他方式,我想要导航属性为我的方式。
asp.net-core - 对于 CLR 类型为“Nullable”的属性“Identity.User.LockoutEnd”,找不到到关系类型的映射'
我想创建一个迁移来在我的数据库中创建一个新表,但是在执行之后Add-Migration MsSql_Add_ArticleCategory_Table
,我得到了这个错误:
对于 CLR 类型为“Nullable”的属性“Alpha.Models.Identity.User.LockoutEnd”,找不到到关系类型的映射。
我该如何解决它(我在我的项目中使用了 asp.net core 3.1)?
PM> Add-Migration MsSql_Add_ArticleCategory_Table 构建开始...构建成功。Microsoft.EntityFrameworkCore.Model.Validation[30000] 没有为实体类型“Article”上的十进制列“RateCounter”指定类型。如果值不符合默认精度和比例,这将导致值被静默截断。使用“HasColumnType()”显式指定可以容纳所有值的 SQL 服务器列类型。Microsoft.EntityFrameworkCore.Model.Validation[30000] 没有为实体类型“Rating”的十进制列“Rate”指定类型。如果值不符合默认精度和比例,这将导致值被静默截断。使用“HasColumnType()”显式指定可以容纳所有值的 SQL 服务器列类型。Microsoft.EntityFrameworkCore.Infrastructure[10403] Entity Framework Core 3.1.3 使用提供程序“Microsoft.EntityFrameworkCore.SqlServer”初始化“ApplicationDbContext”,选项:MigrationsAssembly=Alpha.DataAccess System.InvalidOperationException:找不到属性的关系类型的映射CLR 类型为“Nullable”的“Alpha.Models.Identity.User.LockoutEnd”。在 Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.Diff(IProperty 源,IProperty 目标,DiffContext diffContext)+MoveNext() 在 Microsoft.EntityFrameworkCore.Migrations 的 Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingSourceExtensions.GetMapping(IRelationalTypeMappingSource typeMappingSource, IProperty 属性)。 Internal.MigrationsModel 不同。
1 sources, IEnumerable
1 个目标,DiffContext diffContext,Func4 diff, Func
3 添加,Func3 remove, Func
4[] 谓词)+MoveNext() 在 System.Linq.Enumerable.ConcatIterator1.MoveNext() at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.Diff(TableMapping source, TableMapping target, DiffContext diffContext)+MoveNext() at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.DiffCollection[T](IEnumerable
1 源,IEnumerable1 targets, DiffContext diffContext, Func
4 差异,Func3 add, Func
3 删除,Func4[] predicates)+MoveNext() at System.Linq.Enumerable.ConcatIterator
1.MoveNext() 在 Microsoft.EntityFrameworkCore。 Migrations.Internal.MigrationsModelDiffer.Sort(IEnumerable1 operations, DiffContext diffContext) at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.GetDifferences(IModel source, IModel target) at Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.ScaffoldMigration(String migrationName, String rootNamespace, String subNamespace, String language) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.<>c__DisplayClass0_0.<.ctor>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0
1.b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) 找不到属性“Alpha.Models.Identity.User”到关系类型的映射。 LockoutEnd',CLR 类型为'Nullable'。PM>
用户身份模型:
c# - 使用 Microsoft Entity Framework Core 设计购物车模型
我是 Entity Framework Core 的新手。在我的购物车模型设计中,我在使用 Entity Framework Core 设计模型类时有点困惑。
我已将地址集合分配给用户模型,因为一个用户可以有多个送货地址。
在我的订单模型中,一个用户可以进行多个订单,因此我userID
在订单表中声明为外键cartID
(因为订单属于购物车)。
在我看来,在处理订单时,我的要求是用户应该能够从下拉列表中选择他方便的地址。
这些是我在项目中的模型类:
用户型号:
地址型号:
订购型号:
公共类订单 { public int Id { 获取;放; } 公共 int CartID { 获取;放; } 公共购物车购物车 { 获取;放; }
推车型号:
我的模型类的设计是否正确?
我应该ICollection<Order>
在User
模型中包含一个用户可以有多个订单吗?
我应该声明UserAddress
为一个单独的模型类来映射用户及其地址吗?
我的Cart
模型与用户(使用userid
)映射,因为每个用户都有自己的购物车,所以userID
在购物车和订单模型中重复(有什么方法可以消除这种依赖关系)还是正确的?
.net-core - 删除迁移和更新数据库实体框架核心时出错 从流中读取时出错
我正在使用带有实体框架代码优先方法的restful服务在dotnet core web api中工作。我正在运行一次迁移,当我使用 add-migration 命令运行迁移时,构建成功,但是当我尝试使用 remove-migration 更新数据库或回滚迁移时,出现以下错误:
c# - 实体框架 MVC 代码优先 BIND 不适用于 EDIT 操作中的子实体
我正在使用带有 MySQL db 的 ASP Core Web 应用程序、MVC、Code First。这是我的数据库的结构:
这是这两个模型/类的代码:
=====此代码适用于第二个 EmployeeDate 表(儿童)=====
CREATE 方法工作正常,包括 HiredDate (Not FiredDate)。但 EDIT 仅适用于 Employee 属性, FiredDate 属性不起作用。我可以更新其他所有内容,例如名字、年龄等,但不能更新 FiredDate。
这是控制器内部的代码:
顺便说一句,当在 Create View 中注释掉 FiredDate div 时(因为那里不需要它),我的项目无法立即构建。
sql-server - 如何从 ASP.NET Core 3.1 Identity 中的 IdentityUser 类添加关系?(代码优先)
我有一个 Asp.Net Core MVC 3.1 项目。我想使用代码优先技术加入约会和患者表,但是外键列为空。
我的病人班;
而我的预约课,我与病人和预约有一对多的关系。
如果我向外键添加“必需”注释而不保存约会。
我怎么解决这个问题?
c# - 数据库集.AddAsync 在导致异常的标识列上设置 id 值
我有一个班级订单,它与其他 2 个班级有关系,但问题在于这里的 ID
我以这种方式映射:
在我的存储库中,我正在使用这种方法进行保存,因为您可以看到属性TradingAction
并且Status
不是由我填写,但它们的 Id 被传递给要创建的订单。
在这种情况下 _context.Set<TEntity>().AddAsync(entity);
抛出一个异常说:
当 IDENTITY_INSERT 设置为 OFF 时,无法为标识列插入显式值。
运行 SqlProfiler 我得到这个查询:
这告诉我什么@p0=-2147482647
时候应该自动生成身份。
如果我在我的映射上将此行更改为此它可以工作并将属性设置为身份:
这是不允许我使用.UseIdentityColumn()
方法的问题。