gpt4 book ai didi

c# - DbSet.Add() 不工作

转载 作者:行者123 更新时间:2023-11-30 15:28:50 25 4
gpt4 key购买 nike

我有这样一个类:

[Table("member_activation")]
public partial class MemberActivation
{
[Key]
public Int64 member_id { get; set; }
public String token { get; set; }
}

我的数据库:

public class SMADbContext : DbContext
{
public SMADbContext() : base("SMADB")
{
Database.SetInitializer<SMADbContext>(new NullDatabaseInitializer<SMADbContext>());
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}

public DbSet<Member> Members { get; set; }
public DbSet<MemberActivation> MemberActivations { get; set; }
public DbSet<ApiAccount> ApiAccounts { get; set; }
public DbSet<ApiHardware> ApiHardwares { get; set; }
public DbSet<MemberRelation> MemberRelations { get; set; }
}

在我的 Controller 中:

    [Route("tester")]
[AllowAnonymous]
public IHttpActionResult tester()
{
using (var db = new SMADbContext())
{
var memberActivation = new MemberActivation();
memberActivation.member_id = 10155;
memberActivation.token = "hello";

db.MemberActivations.Add(memberActivation);
return Json(new { dbset = db.MemberActivations.ToList(), memberAct = memberActivation });

}
}

db.MemberActivations.Add(memberActivation);不起作用。当我返回 json 时,dbset 不包括新创建的 memberActivation。我没有 db.SaveChanges() 因为它不会保存直到 memberActivation 被推送到 dbset

最佳答案

您不能设置 member_id,它是 key ,ef 将其用作标识。它将被忽略。您可以配置 ef,使 member_id 不是身份,但这是另一个话题。

 db.MembershipActivations.Add( new MemberActivation { token = "hello"}):
db.SaveChanges();

应该可以正常工作。

但是,如果您有一个现有成员,并且您正在尝试通过连接表与该实体建立关系,那么它会出现。然后您应该检索该实体并设置 memberactivation。 Ef 将为您解决其余问题。这里有点猜测,因为我需要查看所涉及的实体。

关于c# - DbSet.Add() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24872778/

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