C# 使用实体框架在Asp.NETMVC5中用必填字段部分填充表

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,

我有一个场景,其中我维护用户的配置文件。profile表包含20列,其中10列是必填字段。最初,当用户注册时,我将该信息(名字、姓氏、国家/地区、电子邮件、密码)保存在项目的默认数据库中,然后我有一个单独的SQL数据库,我在其中为每个用户维护一个配置文件。我在注册阶段获取的字段(如上所述)被输入到Sql数据库中,其余字段为空,供用户稍后填充

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分两步完成