gpt4 book ai didi

c# - ASP.NET MVC 3 如何将 ViewModel 数据保存到多个关联表

转载 作者:搜寻专家 更新时间:2023-10-30 20:43:02 24 4
gpt4 key购买 nike

我只是一个标准的先行者,我正在自学通过 ASP.NET MVC 3 进行编程,所以我的知识是基本的,并且从概念上讲,我愿意接受更好的方法来完成我正在尝试做的事情。

所以,这就是我想要做的:

我创建了一个 ViewModel 来收集公司和用户数据。我的目的是将这些数据保存到两个域模型中,公司和用户,其中 Company 中的 IdUser 中的外键。此外,我想传递必要的用户数据以创建成员(member)资格。

我的问题是,既然我已经超越了基本 ASP.NET MVC 教程中的基本强类型模型关联,我不确定如何通过 HttpPost 同步所有内容。

这是我的ViewModel:

public class SPCompanyViewModel
{
[Required]
[Display(Name = "Company Name")]
public string CompanyName { get; set; }

[Required]
[Display(Name = "First Name")]
public string FirstName { get; set; }

[Required]
[Display(Name = "Last Name")]
public string LastName { get; set; }

[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address")]
public string Email { get; set; }

[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }

[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}

这是我的公司用户领域模型:

namespace BidFetcher.Models.ServiceProvider
{
public class SPCompany
{
public int Id { get; set; }
public string CompanyName { get; set; }
}

public class SPUser
{
public int Id { get; set; }
public int SPCompanyId { get; set; }

public string FirstName { get; set; }
public string LastName { get; set; }
}
}

这是我的问题区域,Controller:

[HttpPost]
public ActionResult Create(SPCompanyViewModel viewModel)
{
var spCompany = new SPCompany
{
CompanyName = viewModel.CompanyName,
};
db.SPCompany.Add(spCompany);

return RedirectToAction("Index");
}

如您所见,我可以毫无问题地创建公司记录。但是,现在我陷入困境,因为我不确定如何从我刚刚创建的记录中轻松获取公司 Id,以便我可以在用户表中创建一个新行。

非常感谢任何关于解决此类问题的代码建议或概念性建议!

最佳答案

如果你的id是在sql server上生成的,可以添加Attribute:[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]此键的值将在 db.SaveChanges() 之后位于您的实体中示例:

public class SPCompany
{
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string CompanyName { get; set; }
}

[HttpPost]
public ActionResult Create(SPCompanyViewModel viewModel)
{
var spCompany = new SPCompany
{
CompanyName = viewModel.CompanyName,
};
db.SPCompany.Add(spCompany);
db.SaveChanges();
var spCompanyId = spCompany.Id //there you get id of new record

return RedirectToAction("Index");
}

关于c# - ASP.NET MVC 3 如何将 ViewModel 数据保存到多个关联表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11780396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com