public void Insert_with_non_key_default_value_readonly() { using (var testStore = MySqlTestStore.CreateInitialized(DatabaseName)) { using (var context = new BlogContextNonKeyReadOnlyDefaultValue(testStore.Name)) { context.Database.EnsureCreatedResiliently(); context.AddRange( new Blog { Name = "One Unicorn" }, new Blog { Name = "Two Unicorns" }); context.SaveChanges(); Assert.NotEqual(new DateTime(), context.Blogs.ToList()[0].CreatedOn); } DateTime dateTime0; using (var context = new BlogContextNonKeyReadOnlyDefaultValue(testStore.Name)) { var blogs = context.Blogs.OrderBy(e => e.Id).ToList(); dateTime0 = blogs[0].CreatedOn; Assert.NotEqual(new DateTime(), dateTime0); Assert.NotEqual(new DateTime(), blogs[1].CreatedOn); blogs[0].Name = "One Pegasus"; blogs[1].CreatedOn = new DateTime(1973, 9, 3, 0, 10, 0); context.SaveChanges(); } using (var context = new BlogContextNonKeyReadOnlyDefaultValue(testStore.Name)) { var blogs = context.Blogs.OrderBy(e => e.Id).ToList(); Assert.Equal(dateTime0, blogs[0].CreatedOn); Assert.Equal(new DateTime(1973, 9, 3, 0, 10, 0), blogs[1].CreatedOn); } } }
public void Insert_explicit_value_throws_when_readonly_before_save() { using (var testStore = SqlServerTestStore.CreateInitialized(DatabaseName)) { using (var context = new BlogContextNonKeyReadOnlyDefaultValue(testStore.Name)) { context.Database.EnsureCreated(); context.AddRange( new Blog { Name = "One Unicorn" }, new Blog { Name = "Two Unicorns", CreatedOn = new DateTime(1969, 8, 3, 0, 10, 0) }); // The property 'CreatedOn' on entity type 'Blog' is defined to be read-only before it is // saved, but its value has been set to something other than a temporary or default value. Assert.Equal( CoreStrings.PropertyReadOnlyBeforeSave("CreatedOn", "Blog"), Assert.Throws <InvalidOperationException>(() => context.SaveChanges()).Message); } } }