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