![](/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.