我可以在实体代码的方法中填写两个表吗?

本文关键字:两个 代码 实体 方法 我可以 | 更新日期: 2023-09-27 18:30:27

我可以在下面的代码中填写两个表格吗?地址,编码,费用应填写tbl_Reciver。但 Lname 、 Name 、Tell 应填写Tbl_Sender。我可以在这里填两张桌子吗?

    public static bool InsertInTables(string Address, string Cod, int? cost,string Lname, string Name, string Tell )
        {
        MyContext db = new MyContext();
        try
        {
           //Can i fill Tbl_Sender like tbl_Reciver here 
            var tbl1 = new tbl_Reciver
            {
                id = MaxIdInTbl (),
                Address_s = Address,
                Cod_s = Cod,
                Cost_s = cost,
                  //i wanna fill below fields in tbl_Sender
                  // Lname_s = Lname,
                  // Name_s = Name,
                  //Tell_s = Tell,

            };
              //is it possible i fill two tables ?
            db.tbl_Reciver.Add(tbl1);
            db.SaveChanges();
            return true;
        }
        catch
        {
            return false;
        }
    }

我可以在实体代码的方法中填写两个表吗?

SaveChanges看到两者都是新的并且它们是相关的时,它会为您完成所有这些操作。它还使用模型的映射来确定哪个是依赖实体并需要外键。使用此信息,它将按正确的顺序执行数据库插入。

注意:如果使用 DbFirst 方法为现有数据库创建上下文,则也会自动生成模型。

但是代码优先方法 如果您有任何约束,则应使用覆盖以下方法定义模型。

protected virtual void OnModelCreating(
    DbModelBuilder modelBuilder
)

然后,您可以使用同一事务保存实体。如果有任何失败,则会自动回滚事务本身。

      Using(MyContext db = new MyContext())
      {
        try
        {
            var tbl1 = new tbl_Reciver
            {
                id = MaxIdInTbl (),
                Address_s = Address,
                Cod_s = Cod,
                Cost_s = cost,
            };
            long maxId=MaxIdInTbl();
            var tbl2= db.tbl_Sender.FirstOrDefault(x => x.id == maxId);
            tbl2.Lname_s = Lname;
            tbl2.Name_s = Name;
            tbl2.Tell_s = Tell;
            db.Refresh(RefreshMode.StoreWins,tbl2);
            db.tbl_Reciver.Add(tbl1);
            db.SaveChanges();
            return true;
        }
        catch
        {
            return false;
        }
     }