gpt4 book ai didi

entity-framework - Npgsql 与 Entity Framework Code First 的集成

转载 作者:行者123 更新时间:2023-12-04 14:30:00 26 4
gpt4 key购买 nike

我有一个使用最新版本的 EF CF 和 PostgreSQL 和 Npgsql 的项目。

我的模型看起来像:

[Table("mytable")]
public class MyTable
{
[Column("id")]
public int Id { get; set; }
[Column("mycolumn")]
public string MyColumn { get; set; }
}

并且数据库/表/列具有小写名称,例如:
CREATE TABLE mytable
{
id serial,
mycolumn character(50)
}

Npgsql 生成带引号的 SQL 命令,因此由于 PostgreSQL 特性,我必须使用数据注释,女巫很烦人。但是我不想在数据库中使用引号分隔名称。

有没有办法将 Npgsql 配置为在生成命令时不包含引号或在生成的 SQL 中强制使用小写表/列名称?

最佳答案

如果我没有遗漏一些东西 - 你会想要一些通用的方式 of changing the naming convention for tables ?

EF6 具有 custom conventions功能 - 它仍然不是官方版本,但如果它适合你,一些链接......

http://entityframework.codeplex.com/wikipage?title=Custom%20Conventions

在您的情况下,您必须为 class/Type 实现它我猜 - 例如(一些伪代码)...

1) 实现 IConfigurationConvention<Type, EntityTypeConfiguration> (您可以查看 EntityConventionBase 的 EF 来源)

2) 在 Apply - 更改通过配置( ToTable() )生成表名称的方式 - 类似于 .ToLowerCase()
3)添加到约定...

例如...

public class SmallCapsEntitiesConfigurationConvention
: IConfigurationConvention<Type, EntityTypeConfiguration>
{
public void Apply(Type memberInfo, Func<EntityTypeConfiguration> configuration)
{
configuration().ToTable(memberInfo.Name.ToLowerInvariant(), null);
}
}

你可以在这里看到一个例子
http://blog.cincura.net/233167-custom-conventions-in-entity-framework-6-helping-firebird/

否则,我不知道 Npgsql/PostgreSQL - 在我看来确实有点“原始”。但是您可以在 EF 端处理它。

关于entity-framework - Npgsql 与 Entity Framework Code First 的集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15814612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com