我创建了一个模型BaseModel
,将这2个属性date_created
和date_modified
继承到我数据库中的所有模型,以便在创建记录和修改记录时保持记录。
我为这些属性添加了?
操作符以接受空值,如下所示:
基本模型:
namespace API.Models
{
public class BaseModel
{
public BaseModel()
{
created_date = DateTime.Now;
}
public DateTime? created_date { get; set; }
public DateTime? modified_date { get; set; }
}
}
库存
表:
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.AspNetCore.Mvc;
namespace API.Models
{
public class Inventory : BaseModel
{
[Key]
public int inventory_id { get; set; }
[Required(ErrorMessage = "El campo {0} es obligatorio"), StringLength(10, ErrorMessage = "{0} la longitud debe estar entre {2} y {1}.", MinimumLength = 5)]
public string name { get; set; }
public string? location { get; set; }
public bool? status { get; set; }
public List<Asset> assets { get; set; }
}
}
表:
using System.ComponentModel.DataAnnotations;
namespace API.Models
{
public class Asset : BaseModel
{
[Key]
public int asset_id { get; set; }
public int? code { get; set; }
[Required(ErrorMessage = "El campo {0} es obligatorio"), StringLength(10, ErrorMessage = "{0} la longitud debe estar entre {2} y {1}.", MinimumLength = 5)]
public string? name { get; set; }
public int iventory_id { get; set; }
public Inventory inventory { get; set; }
}
}
然后我添加迁移
dotnet ef migrations add v15
和应用迁移
dotnet ef database update
我得到以下错误:
不能插入值NULL到列'created_date',表' webapp .dbo. inventory ';列不允许为空。更新失败。语句已被终止
我不明白为什么我得到这个错误。
当我添加?
操作符数据库不接受空值吗?
请使用这些
public class BaseModel
{
public BaseModel()
{
created_date = DateTime.Now;
}
[DataType(DataType.DateTime)]
public DateTime? created_date { get; set; }
[DataType(DataType.DateTime)]
public DateTime? modified_date { get; set; }
}
或
public class BaseModel
{
public BaseModel()
{
created_date = DateTime.Now;
}
public Nullable<DateTime> created_date { get; set; }
public Nullable<DateTime> modified_date { get; set; }
}
我将示例代码上传到git中,只需更改ConnectionString