そのテーブルにレコードが入力されるたびにデフォルト値に設定したいDateTimeフィールドがあります(これは基本的にDateCreatedフィールドです)。これは私のコードです
public partial class User
{
public User()
{
this.DateCreated = DateTime.Now; //set default value
Roles = new HashSet<Role>();
}
public ICollection<Role> Roles { get; set; } //many to many relationship
public int UserId { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string City { get; set; }
//foreign key
public int CountryId { get; set; }
//navigation properties
public virtual Country Country { get; set; }
//foreign key
public int LanguageId { get; set; }
//navigation properties
public virtual Language Language { get; set; }
public string EmailAddress { get; set; }
public long FacebookId { get; set; }
public DateTime DateCreated { get; set; }
} }
public class UserConfiguration : EntityTypeConfiguration<User>
{
public UserConfiguration()
{
ToTable("Users", schemaName: "Main");
HasKey(s => s.UserId);
Property(p => p.FirstName)
.IsRequired().HasMaxLength(50); //translates to non-nullable
Property(p => p.Surname)
.IsRequired().HasMaxLength(50);
Property(p => p.Username)
.IsRequired().HasMaxLength(20);
Property(p => p.Password)
.IsRequired().HasMaxLength(20);
Property(p => p.City)
.IsOptional().HasMaxLength(50); //not required
Property(p => p.LanguageId)
.IsRequired();
Property(p => p.EmailAddress)
.IsRequired().HasMaxLength(50);
Property(p => p.FacebookId)
.IsOptional();
Property(p => p.DateCreated)
.IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
//attribute ensures that DateCreated only gets saved to the database when you are adding a
//row, not when you are saving
}
}
context.Users.Add(new User
{
FirstName = "Test",
Surname = "User",
Username = "testuser72",
Password = "testuser72",
City = "London",
CountryId = context.Countries.Single(d => d.CountryName == "United Kingdom").CountryId,
LanguageId = context.Languages.Single(d => d.LanguageName == "English").LanguageId,
EmailAddress = "testuser@yahoo.co.uk",
Roles = new Role[] { context.Roles.Single(r => r.RoleName == "Content Editor"), context.Roles.Single(s => s.RoleName == "User") }
});
上記のコードを使用してユーザーを追加しようとすると、「値NULLを列「DateCreated」、テーブル「Main.Users」に挿入できません」というエラーが発生するのはなぜですか。列はnullを許可しません。INSERTは失敗します。