簡體   English   中英

Npgsql.PostgresException:關系“表名”不存在'

[英]Npgsql.PostgresException: relation "tablename" does not exist'

我有以下代碼,使用 Npgsql 4.0.4 版。

var cmd = new NpgsqlCommand("INSERT INTO TableName (Id, DateTime, Dummy) VALUES (@id, @datetime, @dummy)", con);
cmd.Parameters.AddWithValue("id", new Guid());
cmd.Parameters.AddWithValue("datetime", DateTime.Now.ToString());
cmd.Parameters.AddWithValue("dummy", "foo");

我已經在另一個程序中使用實體框架創建了該表。 但是,我收到以下錯誤:

Npgsql.PostgresException: '42P01: 關系“表名”不存在'

我嘗試將 public 放在我的表名之前,並將數據庫名放在我的表名之前。

我想我以前見過這個,EF Core 建議表不存在。 就我而言,由於表名在 Postgres 中是小寫的(在 Oracle 中是大寫的)

可能嘗試小寫您的表名?

    public static class DataContextExtensions
    {
        public static void LowercaseRelationalTableAndPropertyNames(this ModelBuilder modelBuilder)
        {
            foreach (var entity in modelBuilder.Model.GetEntityTypes())
            {
                entity.SetTableName(entity.GetTableName().ToLowerInvariant());

                foreach (var property in entity.GetProperties())
                {
                    property.SetColumnName(property.GetColumnName().ToLowerInvariant());
                }
            }
        }
    }

...並在您的 DataContext ...

    public class DataContext : DbContext
    {

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.LowercaseRelationalTableAndPropertyNames();
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM