我已经使用EF Core Fluent API声明了以下模型:

modelBuilder.Entity<Foo>()
    .HasKey(p => new { p.Name, p.Id });

当我在PostgreSQL中创建数据库时,这两个字段都标记为主键,但ID字段没有标记为自动递增.我也试着加了一句

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]

到Foo下的Id字段,而不影响迁移代码.虽然是PPK,但有没有办法让Id变成AI?

推荐答案

嗯,这些数据注释应该可以做到这一点,也许是与PostgreSQL提供程序相关的东西.

EF Core documentation:

根据使用的数据库提供程序,可能会生成值

您还可以try 使用这个流畅的Api配置:

modelBuilder.Entity<Foo>()
            .Property(f => f.Id)
            .ValueGeneratedOnAdd();

但正如我之前所说,我认为这与数据库Provider 有关.try 向数据库中添加新行,稍后判断是否为Id列生成了值.

Asp.net相关问答推荐

如何防止 IISExpress 和我的网站文件夹弄乱我的文档文件夹?

如何在 ASP.​NET Core 中使用 jquery

从 asp.net 中的 Web.config 获取连接字符串

如何在运行时判断动态数据类型的类型?

IIS 中的嵌套 ASP.NET应用程序继承父配置值?

Azure 自定义控制器/API .Net 后端

正在检索组件的 COM 类工厂......错误:80070005 访问被拒绝. (来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))

'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册.

ASP.NET 中的 <%# Bind("") %> 和 <%# Eval("") %> 有什么区别?

如何验证文件上传的文件类型?

如何将枚举类型绑定到 DropDownList?

将通用列表绑定到转发器 - ASP.NET

无法共同创建探查器错误 - 但未使用探查器

在 ApiController 中添加自定义响应头

如何在 asp net core api 中使用 Created(或 CreatedAtAction / CreatedAtRoute)

ASP.net 中是否有 after Page_Load 事件

ASP .NET 单例

使 WCF Web 服务与 GET 请求一起工作

ASP.NET - 从静态方法/静态类访问会话?

使用 FileUpload Control 获取文件的完整路径