1

//这是我的数据模型:

public class People
{
    public int PeopleID { get; set; }

    [Required]
    public string Name { get; set; }
}

[Table("User")]
public class User : People
{
    [Required]
    public string LoginName { get; set; }

    [Required]
    public string PassWord { get; set; }

}

//我将一个项目存储到人员表中

context.People.Add(new People { Name = "Jack" });

context.SaveChanges();

//现在“Jack”被提升为这个系统的用户 //我怎样才能更新他的数据并让他拥有登录名和密码?

4

2 回答 2

0

首先,您需要声明鉴别器列。例如 PeopleType,它不能通过特定值区分用户和所有人。

因此,在您的场景中,您需要将 Jack 创建为用户,但您可以将其作为人员项目

[Table("People")] 
public class People 
{ 
    public int PeopleID { get; set; } 

    [Required] 
    public string Name { get; set; } 

    public int Type { get; set; }
} 

public class User : People 
{ 
    [Required] 
    public string LoginName { get; set; } 

    [Required] 
    public string PassWord { get; set; }

}

在 DbContext 中覆盖它

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
            modelBuilder.Entity<People>().Map<User>(m => { m.Requires("PoepleType").HasValue(1 /* any value you like */); })
}
于 2012-03-16T06:51:55.383 回答
0

这是一个常见的设计错误。

对象不能改变它们的类型;在这种情况下,您不应该使用继承。

相反,User可以引用 a Person(另一个提示:您的实体名称应该是单数,无论您如何命名表)

于 2012-03-16T16:07:30.717 回答