2012-02-20 90 views
1

考虑,我有以下类别:当实体框架自动生成的属性被填充

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

} 

这是我自定义的成员提供了ASP.NET MVC3网站的精简版。在这种情况下User.Id在什么时候被实际的Guid填充?

回答

0

您必须针对您的Id属性应用DatabaseGeneratedOption

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

    public string UserName {get; set;} 
} 
+1

谢谢。但这不应该是一个强制性的步骤。很显然,开发人员不希望对密钥生成感到困扰。 – 2012-02-22 22:24:25

+1

@ MaximV.Pavlov有趣的是,你这么说。相反,我在这里。需要一个属性是一个关键,但必须禁用数据库生成,所以我可以手动填充。 – LukeP 2013-01-01 22:55:28