![](/img/trans.png)
[英]Npgsql.PostgresException: '42P01: relation “table” does not exist'
[英]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.