Can*_*ğlu 8 .net sql-server entity-framework entity-framework-6 .net-4.6
我已经看到很多关于如何将字段标记为标识列的帖子和答案.其中许多已过时,并且目标是旧版本的Entity Framework.
一些资源告诉我在字段上使用属性:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
Run Code Online (Sandbox Code Playgroud)
其他资源告诉我将此代码添加到OnModelCreating方法:
modelBuilder.Entity<User>().Property(u => u.ID).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);
Run Code Online (Sandbox Code Playgroud)
我应该使用哪一个?第一,第二,两者,无所谓,或其他什么?
这是针对那些在此问题上损失了两个多小时的人员的。
我将一列标记为KEY犯了一个错误,后来我意识到这不是键,而只是一列。
我的模型具有依赖性,所以我不能只删除KEY属性而已。在生成相应的迁移并设置:identity为true之后,默认的Id列永远不会在SQL Server上用作身份列。
相反,我不得不从上下文中删除Dbset,删除对其的所有引用以及其他实体中的所有引用。并生成删除表的迁移,然后修复模型..确保没有问题。然后生成完善的模型,重新插入所有依赖项。
第一手是我的错误。因此,除了我自己,我没有什么可责备的。
希望没有人再遇到这种情况,但是如果发生了,这就是我所做的。
只要主键属性的类型是数字或GUID,按照惯例,Code First将自动将键配置为标识列。
这意味着您不需要在代码中进行任何配置就可以将该属性显式设置为标识列,因为Code First已经为此使用了covention。您设置的数据注释属性或流畅的API配置无用。
仅在要禁用身份时,才可以在数字或GUID类型的主键上使用这些配置。
| 归档时间: |
|
| 查看次数: |
12938 次 |
| 最近记录: |