I know that there is a lot of similar questions but none of them helped me. I have a table 'DeliveryAddresses' with 'DeliveryAddressId' key (Guid type). It's marked as autogenerated
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
but when I'm trying to add new record to my table exception appears:
SqlException: Cannot insert the value NULL into column 'DeliveryAddressId', table 'ProjectName.dbo.DeliveryAddresses'; column does not allow nulls. INSERT fails.
The statement has been terminated.
I don't know what to do because in the same way I'm adding rows to other tables and everything looks the same.
public class DeliveryAddress
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid DeliveryAddressId { get; set; }
[Required(ErrorMessage = "Number of the building is required")]
public string StreetName { get; set; }
[Required(ErrorMessage = "Postcode is required")]
public string Postcode { get; set; }
[Required(ErrorMessage = "City is required")]
public string City { get; set; }
}
_
public class Product
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ProductId { get; set; }
[Display(Name = "Product")]
[Required(ErrorMessage = "Product name is required")]
public string Name { get; set; }
[Required(ErrorMessage = "Price is required")]
public double Price { get; set; }
[ForeignKey("Subcategory")]
public Guid SubcategoryId { get; set; }
public virtual Subcategory Subcategory { get; set; }
}
and this code works for Product, not for DeliveryAddress
Product prod = new Product();
prod.Name = "name";
prod.Price = 10.50;
prod.SubcategoryId = _dbContext.Subcategories.FirstOrDefault(s => s.SubcategoryId != null).SubcategoryId;
_dbContext.Products.Add(prod);
_dbContext.SaveChanges();
DeliveryAddress add = new DeliveryAddress();
add.City = "City";
add.StreetName = "Street";
add.Postcode = "55555";
_dbContext.DeliveryAddresses.Add(add);
_dbContext.SaveChanges();
It doesn't work even with add.DeliveryAddressId = Guid.NewGuid()
.
Only clue I can give you: when I was creating models by mistake I named this class 'DelieveryAddress' (extra 'e') but it's fixed in next migrations, maybe it's something about it?