为了账号安全,请及时绑定邮箱和手机立即绑定

实体框架中的一对一关系插入

实体框架中的一对一关系插入

C#
婷婷同学_ 2022-10-23 15:12:32
我有 2 个表,用户和员工CREATE TABLE [dbo].[Users]( [UserID] [int] IDENTITY NOT NULL, [Username] [nvarchar](8) NOT NULL, [Activo] [bit] NOT NULL, [UltimoAcesso] [datetime] NULL, PRIMARY KEY (UserID))CREATE TABLE [dbo].[Employees](    [ColaboradorID] [int] IDENTITY(1,1) NOT NULL,    [Nome] [nvarchar](100) NOT NULL,    [Email] [nvarchar](100) NULL,    [UserID] [int] NULL    PRIMARY KEY(ColaboradorID),    UNIQUE (UserID))ALTER TABLE [dbo].[Employees]  WITH CHECK ADD  CONSTRAINT [FK_Employees_UtilizadorID] FOREIGN KEY([UserID])REFERENCES [dbo].[Users] ([UserID])ON UPDATE CASCADEON DELETE CASCADE我首先使用实体框架数据库。我正在尝试插入一个新用户 public void fvAddUser_InsertItem()        {            var item = new InventarioCiclico.Users();            using (InventarioCiclicoContext db = new InventarioCiclicoContext())            {                Employee c = new Employee ();            c.Nome = (fvAddUser.FindControl("txtNome") as TextBox).Text;            c.Email = (fvAddUser.FindControl("txtEmail") as TextBox).Text;            item.Employee.Add(c);            var employee = db.Set<Employee>();            TryUpdateModel(item);            if (ModelState.IsValid)            {                if (db.Users.Any(u => u.Username == item.Username))                {                    // Handle exception                }                else                {                    db.Users.Add(item);                     db.SaveChanges();                     var userID = item.UserID;                    c.UserID = userID;                    employee.Add(c);                    db.SaveChanges();                }                                }        }    }但是它一直给我违反独特价值的例外?在开始使用实体框架之前,我会先在 Users 表上插入,然后获取 scope_identity 并在 Employee 表上插入,然后我正在尝试使用 EF6 来执行此操作,但我不知道该怎么做。
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您要UserId在数据库中添加两个相同的员工,并且由于UserId是员工表中的唯一字段,因此您会遇到违反唯一值的异常。

在item.Employee.Add(c);您将员工添加到用户的行中,因此,当将用户添加到数据库时,员工将被添加两个。所以你不需要最后三行:


 c.UserID = userID;

 employee.Add(c);

 db.SaveChanges();


查看完整回答
反对 回复 2022-10-23
  • 1 回答
  • 0 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号