在 ASP.NET API 中将数据插入多个表

Posted

技术标签:

【中文标题】在 ASP.NET API 中将数据插入多个表【英文标题】:Insert data to multiples tables in ASP.NET API 【发布时间】:2021-10-09 19:14:21 【问题描述】:

对不起我的英语不好。 我目前正在使用 Angular 学习 ASP.NET Core,但遇到了一些问题。

我有一个包含两个包含这些字段的表的数据库(我删除了一些不需要显示的字段)。 Employee 中的 AccountId 是 Account 表中 PrimaryKey AccountId 的外键。

public class Employee
    
        public int EmployeeIdget;set ;
        public string EmployeeFullName  get; set; 
        public string PhoneNumber  get; set; 
        public int AccountId  get; set; 
    
public class Account
    
        public int AccountId get;set;
        public string Username  get; set; 
        public string Password  get; set; 
    

如何使用 Code first EF 创建具有上述关系的模型?我尝试了一些我在某些页面上阅读的内容,例如:

public Account AccountIdget;set;

但是没有用。

在 Angular 中,我已经有了一个包含 Employee 中这些字段的表单(EmployeeId 和 AccountId 除外)。我可以插入、删除、调整、显示来自 SQL 服务器数据库的数据,但我只能与一个表(员工)进行交互。因为我使用 Employee 模型和 DbSet 从 DbContext 创建了 API 控制器。

如何使用 Angular 中的一种表单,但同时将(API Post)插入两个表。我想使用表单将员工数据插入数据库(员工表)并创建用于登录的帐户(帐户表),用户名是电话号码和默认密码,他们可以稍后更改。

【问题讨论】:

【参考方案1】:

我认为你需要外键注释:

  [ForeignKey(nameof(AccountId))]
  public Account Account  get; set; 

【讨论】:

【参考方案2】:

要关联两个模型,您可以使用属性注释。

public class Employee

    public int EmployeeIdget;set ;
    public string EmployeeFullName  get; set; 
    public string PhoneNumber  get; set; 
    public int AccountId  get; set; 
    
    [ForeignKey("AccountId")]
    public Account EmployeeAccount get; set;


public class Account

    public int AccountId get;set;
    public string Username  get; set; 
    public string Password  get; set; 

更改模型后,您必须创建和更新迁移。

【讨论】:

【参考方案3】:

就像您创建的用于在 Employee 表中插入数据的操作方法一样,创建另一个用于将数据插入到帐户表中的操作方法。 还要创建一个包含帐户和员工模型的所有属性的模型。 然后首先调用您为从角度插入帐户表创建的方法,并将新创建的模型(包含两个表属性)用于该方法。 从 api 中捕获所有数据并将必要的数据插入到帐户表中。 然后从您的创建帐户方法调用您创建的插入员工表的方法,并将 accountId 传递给该方法。 不要忘记在您的 Dbcontext 中添加 Account 模型。 希望你能理解。

【讨论】:

我不太明白这个过程。使用外键数据注释,我可以创建 2 个模型:员工和具有上述外键关系的帐户。使用 API Controller 为 Employee 创建 API 方法,我可以使用 Swagger 向 Employee POST 一个 json(包括其中的 Account 字段)并访问两个表值。但是在 Angular 中,我是否也需要两个创建两个模型和服务?因为我创建了一个表单,使用 ngForm,只从一个 Employee 模型中获取 formData。我尝试包含这些字段,但它不起作用。

以上是关于在 ASP.NET API 中将数据插入多个表的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web API 2使用Get方法从表多个参数中搜索数据

如何使用 jquery asp.net mvc 将多个数据插入到数据库中的 2 个表中

在访问中将数据插入多个表的最佳方法?

在jdbc中的单个事务中将数据插入多个表中

如何使用 sequelize 在一个数据库请求中将数据插入多个表?

在oracle存储过程中将数据插入到多个表中