我可以在实体代码的方法中填写两个表吗?
本文关键字:两个 代码 实体 方法 我可以 | 更新日期: 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;
}
}