5

私はこのようなクラスを持っています:

[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; }
}

私のコントローラーで:

    [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 を返すと、新しく作成された memberActivation が dbset に含まれていません。memberActivation が dbset にプッシュされるまで保存されないため、db.SaveChanges() はありません。

4

1 に答える 1

4

member_id を設定することはできません。これはキーであり、ef はそれを ID として使用します。無視されます。member_id が ID ではないように ef を構成できますが、それは別のトピックです。

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

正常に動作するはずです。

ただし、表示されるように、既存のメンバーがあり、結合テーブルを介してそのエンティティとの関係を設定しようとしている場合。次に、そのエンティティを取得し、memberactivation を設定する必要があります。Efが残りを整理します。関連するエンティティを確認する必要があるため、ここでは少し推測します。

于 2014-07-21T20:34:54.363 に答える