C# 使用实体框架在Asp.NETMVC5中用必填字段部分填充表
我有一个场景,其中我维护用户的配置文件。profile表包含20列,其中10列是必填字段。最初,当用户注册时,我将该信息(名字、姓氏、国家/地区、电子邮件、密码)保存在项目的默认数据库中,然后我有一个单独的SQL数据库,我在其中为每个用户维护一个配置文件。我在注册阶段获取的字段(如上所述)被输入到Sql数据库中,其余字段为空,供用户稍后填充C# 使用实体框架在Asp.NETMVC5中用必填字段部分填充表,c#,asp.net,sql-server,asp.net-mvc,C#,Asp.net,Sql Server,Asp.net Mvc,我有一个场景,其中我维护用户的配置文件。profile表包含20列,其中10列是必填字段。最初,当用户注册时,我将该信息(名字、姓氏、国家/地区、电子邮件、密码)保存在项目的默认数据库中,然后我有一个单独的SQL数据库,我在其中为每个用户维护一个配置文件。我在注册阶段获取的字段(如上所述)被输入到Sql数据库中,其余字段为空,供用户稍后填充 var user = new ApplicationUser { UserName = model.Email, Email = model.Email,
var user = new ApplicationUser { UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, Country = model.Country };
var profile = new Profile { CanID = model.Email, Email = model.Email, FName = model.FirstName, LName = model.LastName, Country = model.Country ,ProfileStatus = "0", CreatedOn = DateTime.Now.ToShortDateString()};
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
db.Profiles.Add(profile);
db.SaveChanges();
//This fails because a few required fields are left out so it has to fail that i understand.
//Also the below code has to fail because since the record is not created than how can the attach function work.
db.Profiles.Attach(profile);
db.Entry(profile).Property(p => p.CanID).IsModified = true;
db.Entry(profile).Property(p => p.Email).IsModified = true;
db.Entry(profile).Property(p => p.FName).IsModified = true;
db.Entry(profile).Property(p => p.LName).IsModified = true;
db.Entry(profile).Property(p => p.Country).IsModified = true;
db.Entry(profile).Property(p => p.ProfileStatus).IsModified = true;
db.Entry(profile).Property(p => p.CreatedOn).IsModified = true;
}
var user保存到我的项目的默认数据库中,var profile将以profile的名称保存在SQL数据库的表中
所以底线是,我有一个表配置文件,它有20列,其中10列是必需的,当用户最初注册时,我将该信息保存在默认数据库中,并且我想将其保存在Sql db的配置文件表中。那个么,当在注册阶段并没有填写所有必需的字段时,我如何将记录保存在Profile表中呢?更准确地说,这是一个创建场景。您需要在配置文件表中将列设置为可为空,或者为该记录设置默认值。为什么说它们是必需的,但没有提供?听起来好像不是必需的。实际上,当用户最初注册时,我不希望他/她一开始就填满整个个人资料页面。我在他注册时获取最少的信息,在表中为他创建一条记录,在执行任何活动之前,他/她下次登录时必须完成该记录。因此,此时他必须填写必填字段。该表与bt相同,bt分两步完成