C# 如何使用非标识主列保存实体?

C# 如何使用非标识主列保存实体?,c#,asp.net-mvc,entity,C#,Asp.net Mvc,Entity,我有一个会员班: [Table("members")] public partial class Member { [Key] public Int64 id { get; set; } public String email { get; set; } public String password { get; set; } public String lang { get; set; } public Boolean activated { g

我有一个会员班:

[Table("members")]
public partial class Member
{
    [Key]
    public Int64 id { get; set; }
    public String email { get; set; }
    public String password { get; set; }
    public String lang { get; set; }
    public Boolean activated { get; set; }
    public String gender { get; set; }
    public String first_name { get; set; }
    public String middle_name { get; set; }
    public String last_name { get; set; }
}
和一个成员激活类:

[Table("member_activation")]
public class MemberActivation
{
    [Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
    public Int64 member_id { get; set; }
    public String token { get; set; }
}
member\u activation.member\u id是members.id中的外键

这是我的DbContext:

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; }
}
我收到一条错误消息,上面说:

无法将值NULL插入“member_id”列、表“dbname.dbo.member_activation”中;列不允许空值。INSERT失败。\r\n语句已终止


有人知道我可以保存我的成员激活行的方法吗?

如果您的查询是如何保存具有非标识主列的实体

那个么答案就是你们不能。tableentity中必须有主键


但实际上,在你的代码中,我可以看到关键。

我觉得这里缺少了一些东西,你发布的代码没有任何问题。@DavidG有些问题,但我刚刚发现了。我必须在成员id上添加一个数据注释,就像在我的编辑中一样[Required,Key,DatabaseGeneratedDatabaseGeneratedOption.None]
public bool tester()
    {
        var db = new SMADbContext();
        var memberActivation = new MemberActivation();
        memberActivation.member_id = 10150;
        memberActivation.token = "hello";
        db.MemberActivations.Add(memberActivation);
        if(db.SaveChanges())
        {
            return true;
        }
        else
        {
            return false;
        }
    }