0
這是我的POCO實體框架的遷移:爲什麼字符串屬性忽略IsRequired「
public class Game
{
public Guid Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Galaxy> Galaxies { get; set; }
}
這裏的TypeConfiguration ....
public class GameConfiguration : EntityTypeConfiguration<Game>
{
public GameConfiguration()
{
HasKey(x => x.Id);
Property(x => x.Id).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);
HasMany(x => x.Galaxies);
Property(x => x.Name)
.IsRequired()
.HasMaxLength(50);
}
}
我的問題是這樣的......爲什麼,當這是遷移代碼沒有將「Name」屬性設置爲「NOT NULL」?它也會忽略MaxLength設置。爲什麼會這樣?
CreateTable(
"dbo.Games",
c => new
{
Id = c.Guid(nullable: false),
Name = c.String(),
})
.PrimaryKey(t => t.Id);
這可能太明顯了,但是您確定實體配置正在模型構建器中註冊?乍一看,即使配置構造函數從未運行,以及名稱屬性是否缺失以解釋它,您的配置的其餘部分也會與約定發生的情況匹配。 – divega
現在我覺得真的很愚蠢。你是正確的,實體配置沒有被註冊在上下文的構造函數中。你可以發佈這個答案,我可以給你信用嗎? – Hades
好的。不要覺得愚蠢! :)很高興它幫助。 – divega