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你这么说很有趣。我来这里是为了相反的目的。需要一个属性作为密钥,但必须禁用数据库生成,以便我可以手动填充。