C# 在ASP.NET CORE应用程序中,EF CORE library不返回新插入的记录';数据库中的身份证?

C# 在ASP.NET CORE应用程序中,EF CORE library不返回新插入的记录';数据库中的身份证?,c#,mysql,asp.net,entity-framework,asp.net-web-api,C#,Mysql,Asp.net,Entity Framework,Asp.net Web Api,我有一个asp.NETWebAPI项目,下面的查询运行良好 将数据添加到数据库中,并在\u context.SaveChanges()之后返回新添加的ID 我正在使用MYSQL数据库。它也必须在MYSQL中工作:( 但是,当我使用EF CORE将asp.net webapi代码迁移到asp.net CORE时,成功地将新记录插入数据库,但在\u context.SaveChanges()之后,它将0作为新Id返回 public partial class Student {

我有一个asp.NETWebAPI项目,下面的查询运行良好 将数据添加到数据库中,并在
\u context.SaveChanges()之后返回新添加的ID


我正在使用MYSQL数据库。它也必须在MYSQL中工作:(

但是,当我使用EF CORE将
asp.net webapi代码迁移到asp.net CORE时,成功地将新记录插入数据库,但在
\u context.SaveChanges()
之后,它将0作为新Id返回

public partial class Student
    {
        public int Id { get; set; }
        public string name { get; set; }
       }


Student student = new Student()
student.name = "test";

_context.Add(student);
_context.SaveChanges()

int newID = student.Id ; 
//在asp.net webapi中获取了自动生成的Id,但在asp.net核心项目中该Id为0


有什么线索吗?

这对我来说既不是EF Core 1.2也不是2.0

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Threading.Tasks;

namespace ConsoleApp8
{

    public partial class Student
    {
        public int Id { get; set; }
        public string name { get; set; }
    }



    public class Db : DbContext
    {
        public DbSet<Student> Students { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("Server=localhost;database=EfCoreTest;Integrated Security=true;MultipleActiveResultsets=false");
            base.OnConfiguring(optionsBuilder);
        }

    }
    class Program
    {

        static void Main(string[] args)
        {            

            using (var db = new Db())
            {
                db.Database.EnsureDeleted();
                db.Database.EnsureCreated();

                Student student = new Student();
                student.name = "test";

                db.Add(student);
                db.SaveChanges();

                int newID = student.Id;
                Console.WriteLine($"NewID {newID}");
            }
            Console.WriteLine("Hit any key to exit.");
            Console.ReadKey();


        }
    }
}
使用Microsoft.EntityFrameworkCore;
使用制度;
使用System.Collections.Generic;
使用System.Data.SqlClient;
使用System.Linq;
使用System.Threading.Tasks;
名称空间控制台App8
{
公立部分班学生
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
公共类Db:DbContext
{
公共数据库集学生{get;set;}
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder)
{
optionsBuilder.UseSqlServer(“服务器=本地主机;数据库=EfCoreTest;集成安全性=true;MultipleActiveResultsets=false”);
基本配置(选项生成器);
}
}
班级计划
{
静态void Main(字符串[]参数)
{            
使用(var db=new db())
{
db.Database.EnsureDeleted();
db.Database.recreated();
学生=新生();
student.name=“测试”;
db.Add(学生);
db.SaveChanges();
int newID=student.Id;
Console.WriteLine($“NewID{NewID}”);
}
控制台。WriteLine(“按任意键退出”);
Console.ReadKey();
}
}
}

我也遇到了同样的问题。就我而言,我首先使用了数据库。 我的脚手架被标记为使用数据站

dotnet ef dbcontext scaffold "Host=localhost;Port=3306;Database=dbtest;Usernt=root;Password=mypass" -o "Entities" Pomelo.EntityFrameworkCore.MySql -c "DatabaseRepository" -f -d
即使标记为“data anotation”,也会在上下文中的onModelCreate方法中生成一些FluentAPI脚本

modelBuilder.Entity<MyEntity>(entity =>
        //{
        //    entity.Property(e => e.Id).ValueGeneratedNever();
        //});
modelBuilder.Entity(Entity=>
//{
//Property(e=>e.Id).ValueGeneratedNever();
//});
验证是否有在Id属性中设置ValueGeneratedNever的类似代码。更改为ValueGeneratedAnd

如何使用data anotation代替FluentAPI,我删除了onModelCreate方法中的代码


使用两个选项中的一个,应该有效。

请包括
学生的源代码
。添加到问题中,请检查
学生
实体的主键是什么?如果您对此不做任何说明,它将是
Id
,但是从您得到的错误来看,它可能是
名称
属性吗?您可以通过调用
ConfigureServices
中的
AddConsole
AddDebug
为日志提供服务。主键是
Id
,它是自动生成的字段。没有错误,但唯一的问题是,当我将asp.net core与EF core一起使用时,我没有得到新插入的Id。我有一个相同的问题。我正在使用asp.net core 2和EF 2,即h MariaDB数据库。连接器是Pomelo版本2.0。我使用的是MYSQL数据库。它也必须在MYSQL中工作:(–1小时前我不知道MYSQL。这个复制程序不适用于MYSQL吗?工作正常,记录也被添加到数据库表中,但在db.SaveChanges()之后始终获得Id为0);int newID=student.Id;不知道为什么:(