繁体   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