我正在使用ASP.net Identity,并具有一个其中包含UserID的模型:
public class Response
{
public int Id { get; set; }
public virtual Survey Survey { get; set; }
public string Userid { get; set; }
public int Ftes { get; set; }
public int Members { get; set; }
public decimal Assets { get; set; }
public decimal Budget { get; set; }
public string Govbody { get; set; }
}
以及其中包含responseid的表:
public class Basiclife
{
[Key]
public int Id { get; set; }
public int ResponseId { get; set; }
public string Plantype { get; set; }
public int Enrolledftes { get; set; }
public decimal Pctemployer { get; set; }
public decimal Fixedbenamt { get; set; }
public decimal Salarymult { get; set; }
public decimal Bencap { get; set; }
}
我正在尝试添加Basiclife记录并将ID设置为等于当前登录用户的responseId(每个用户将只有一个Response):
[HttpPost]
public ActionResult CreateBasicLifeResponse(IEnumerable<BasicLifeResponseViewModel> response)
{
string currentUserId = User.Identity.GetUserId();
Response response = db.response.FirstOrDefault(x => x.Userid = currentUserId);
int responseid = response.Id;
foreach(var y in response)
{
Basiclife blr = new Basiclife();
blr.ResponseId = responseid;
/*
* the rest of the required BasicLife fields
* */
}
return View();
}
我收到错误消息“无法在行Response response = db.response.FirstOrDefault(x => x.Userid = currentUserId);
上将类型字符串隐式转换为bool
鉴于所有用户ID都是字符串,所以我不确定为什么要尝试将其转换为bool。
答案 0 :(得分:1)
您缺少等号:
Response response = db.response.FirstOrDefault(x => x.Userid == currentUserId);
答案 1 :(得分:0)
您忘记放置均等。您应按以下方式使用它。
错误(您使用的)=> db.response.FirstOrDefault(x => x.Userid == currentUserId);
正确(应为)=> db.response.FirstOrDefault(x => x.Userid == currentUserId);
FirstOrDefault仅获取布尔值。