2012-02-20 9 views
1

は、私は以下のクラスを持って考えてみましょう: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 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

ありがとうございました。しかし、これは義務的なステップであってはならない。開発者はKey生成に煩わされたくないことは明らかです。 –

+1

@ MaximV.Pavlovあなたはそれをおもしろいと言います。私は反対側のためにここにいる。キーとなるプロパティが必要ですが、データベースの生成を無効にして手動で設定する必要があります。 – LukeP

関連する問題