在 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 个表中