Entity framework 填充实体框架自动生成的属性时

Entity framework 填充实体框架自动生成的属性时,entity-framework,Entity Framework,假设我有以下课程: class User { [Key] public Guid Id {get; set;} public string UserName {get; set;} } class MyUsersContext: DbContext { DbSet<User> Users {get; set;} } class MyRepository { MyUsersContext _db; //INJECTED User AddUse

假设我有以下课程:

class User
{
   [Key]
   public Guid Id {get; set;}

   public string UserName {get; set;}
}

class MyUsersContext: DbContext
{
   DbSet<User> Users {get; set;}
}

class MyRepository
{
   MyUsersContext _db; //INJECTED

   User AddUser(string userName)
   {
      var newBorn = new User() { UserName = userName };

      _db.Users.Add(newBorn);

      return newBorn;
   }

}

class MyMemProvider: MembershipProvider
{
   MyRepository repo; //INJECTED

   public override MembershipUser CreateUser(string username...
   {
      var ret = repo.AddUser(username);
      return new MembershipUser(System.Web.Security.Membership.Provider.Name, ret.UserName...
   }

}
类用户
{
[关键]
公共Guid Id{get;set;}
公共字符串用户名{get;set;}
}
类MyUsersContext:DbContext
{
DbSet用户{get;set;}
}
类MyRepository
{
MyUsersContext _db;//已注入
用户AddUser(字符串用户名)
{
var=new User(){UserName=UserName};
_db.Users.Add(新生儿);
返回新生儿;
}
}
类MyMemProvider:MembershipProvider
{
MyRepository repo;//已注入
公共重写成员身份用户CreateUser(字符串用户名。。。
{
var ret=repo.AddUser(用户名);
返回新的MembershipUser(System.Web.Security.Membership.Provider.Name,ret.UserName。。。
}
}

这是ASP.NET MVC3站点自定义成员资格提供程序的精简版本。在这种情况下,User.Id在什么时候被实际Guid填充?

您必须在Id属性上应用数据库生成选项

class User
{
   [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
   public Guid Id {get; set;}

   public string UserName {get; set;}
}

谢谢。但这不应该是强制性的步骤。很明显,开发人员不想为密钥生成而烦恼。@MaximV.Pavlov你这么说很有趣。我来这里是为了相反的目的。需要一个属性作为密钥,但必须禁用数据库生成,以便我可以手动填充。