【发布时间】:2016-09-20 22:08:28
【问题描述】:
在我的数据模型(Entity Framework 6.1.3、ASP.NET MVC 5、Code First 和现有数据库)中有两个表,“Person”和“User”,它们共享一对一的关系。 “用户”表的 PK 列具有 PersonID 列,而该列又是“人员”表的 PK。我希望每当创建新的用户记录时,(首先)自动创建一个人记录,然后将 Person 表中的 PersonID 值插入到新的用户记录中。
这是Person表的模型代码:
[Table("Person")]
public partial class Person
{
public int PersonID { get; set; }
public virtual User User { get; set; }
}
这是用户表的型号代码:
[Table("User")]
public partial class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int PersonID { get; set; }
[Required]
[StringLength(20)]
public string Name { get; set; }
public virtual Person Person { get; set; }
}
UserController.cs 代码包括:
// POST: User/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "PersonID,Name")] User user)
{
if (ModelState.IsValid)
{
db.Users.Add(user);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.PersonID = new SelectList(db.People, "PersonID", "PersonID", user.PersonID);
return View(user);
}
Person 表的 SQL:
CREATE TABLE [dbo].[Person](
[PersonID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL
CONSTRAINT [PK_Person_PersonID] PRIMARY KEY CLUSTERED)
用户表的 SQL:
CREATE TABLE [dbo].[User](
[PersonID] [int] NOT NULL,
[Name] [nvarchar](20) NOT NULL
CONSTRAINT [PK_User_PersonID] PRIMARY KEY CLUSTERED)
ALTER TABLE [dbo].[User] WITH CHECK ADD CONSTRAINT [FK_User_Person_PersonID] FOREIGN KEY([PersonID])
REFERENCES [dbo].[Person] ([PersonID])
GO
ALTER TABLE [dbo].[User] CHECK CONSTRAINT [FK_User_Person_PersonID]
GO
在此先感谢大家。
【问题讨论】:
标签: c# sql-server asp.net-mvc entity-framework