第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Npgsql,保存日期時間值時出錯(“CreatedAt”列中的空值違反了非空約束)

Npgsql,保存日期時間值時出錯(“CreatedAt”列中的空值違反了非空約束)

C#
MM們 2023-07-09 09:41:06
我有以下模型:public class Product{    public int Id { get; set; }    public string Name { get; set; }    public string Description { get; set; }    public string Category { get; set; }    public decimal Price { get; set; }    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]    [ScaffoldColumn(false)]    public DateTime CreatedAt { get; set; } = DateTime.Now;}以及以下應(yīng)用程序上下文:public class ApplicationContext : DbContext{    private readonly string _connectionString;    public DbSet<Product> Products { get; set; }    public ApplicationContext(IConfiguration configuration)    {        _connectionString = configuration.GetConnectionString("Sportshop");    }    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)    {        optionsBuilder.UseNpgsql(_connectionString, b => b.MigrationsAssembly("Web"));    }}接下來我將向您展示我的 PostgreSQL 數(shù)據(jù)庫架構(gòu)的屏幕:我試圖在下一個代碼的幫助下保存一個新實體:    public ViewResult Index()    {        Product product = new Product        {            Name = "P1",            Category = "test",            Price = 1000,            Description = "Hello !!!"        };        _applicationContext.Products.Add(product);        _applicationContext.SaveChanges();        return View(// ... some view data);    }但結(jié)果我看到了這個錯誤。我不明白為什么。我絕對確定CreatedAt保存期間該字段不為空。查看調(diào)試屏幕:錯誤在哪里?
查看完整描述

1 回答

?
叮當貓咪

TA貢獻1776條經(jīng)驗 獲得超12個贊

你的財產(chǎn)確實有價值,但它也有裝飾[DatabaseGenerated(DatabaseGeneratedOption.Computed)]。

通過使用Computed,您告訴 EF Core 必須將屬性的值保留給數(shù)據(jù)庫。換句話說,數(shù)據(jù)庫完全負責在每次查詢期間生成或計算值。

生成的插入語句將如下所示

INSERT?INTO?Products?(Id,?Name,?Description,?Category,?Price)?...

這將失敗,因為CreatedAt有 NOT NULL 設(shè)置,顯然沒有默認值。

您可以嘗試使用 Fluent API 為該字段指定默認值:

protected override void OnModelCreating(ModelBuilder modelBuilder)

{

? ? modelBuilder.Entity<Product>()

? ? ? ? .Property(b => b.CreatedAt)

? ? ? ? .HasDefaultValueSql("getdate()");

}

只要 Npgsql 支持,它就應(yīng)該有效,但我不確定。如果它不起作用,那么您可能別無選擇,只能刪除該屬性并將價值創(chuàng)造掌握在自己手中。


查看完整回答
反對 回復 2023-07-09
  • 1 回答
  • 0 關(guān)注
  • 177 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號