【发布时间】:2015-11-26 20:02:28
【问题描述】:
我看过很多关于如何将字段标记为标识列的帖子和答案。其中许多已经过时并且针对的是旧版本的实体框架。
一些资源告诉我在字段上使用属性:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
其他资源告诉我将此代码添加到OnModelCreating方法:
modelBuilder.Entity<User>().Property(u => u.ID).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);
我应该使用哪一个?第一,第二,两者都无所谓,还是别的什么?
【问题讨论】:
-
任你选择。我将两者混合使用:属性用于类似这样的简单事物,
modelBuilder用于属性未涵盖的更复杂场景。它们都同样有效,您会看到在幕后(EF“约定”),属性用于告诉modelBuilder做什么。 -
@Amy 谢谢。我想我会采用属性方法,因为它会产生更清晰的代码。您能否发表您的评论作为答案,以便我接受?
-
这个属性是主键吗?
-
@CodeNotFound 是的。我也有
Key属性(我认为我不需要它,因为属性名称是ID) -
您不需要这些配置,因为 ID 是主键和数字类型。我的回答如下。
标签: .net sql-server entity-framework entity-framework-6 .net-4.6