如果不存在,则添加,否则插入
本文关键字:插入 添加 如果不 如果 不存在 | 更新日期: 2023-09-27 18:31:52
我正在一个项目中工作,我需要使用实体框架将数据保存到不同的表中。我实际上是在保存地址。
我的表格是:
地址(Id、地址行 1、StateId、SuburbId、邮政编码 Id)
状态(ID、状态名称)
郊区(ID,郊区名称)
邮政编码(身份证、邮政)
如何插入新地址,如果表中存在邮政编码和/或郊区,请将现有地址用于新地址,否则将新郊区/邮政编码插入相关表中。例如,正在插入一个新地址,但郊区表中已经存在郊区,因此我需要对现有地址进行约束,而不是在郊区表中创建(复制)郊区。
有意义吗?我没有尝试过任何东西,因为我不知道该尝试什么。
这是我到目前为止所拥有的:
Entities db = new Entities();
var addrSuburb = new Suburb()
{
SuburbName = "My Suburb"
};
var addrState = new State()
{
State1 = "My State",
StateShort = "MS"
};
var addrPostCode = new Postcode()
{
PO = 4234
}
var addrCust = new Address()
{
AddressLine1 = My address,
Suburb1 = addrSuburb,
Postcode1 = addrPostCode,
State = addrState
};
db.Postcodes.Add(addrPostCode);
db.Suburbs.Add(addrSuburb);
db.States.Add(addrState);
db.Addresses.Add(addrCust);
db.SaveChanges();
如果我能举一个小例子,那就太好了!
如果你能做出决定天气,它应该是 根据郊区名称插入或更新郊区表 您可以按如下方式执行此操作。
if(!db.Suburbs.where(x=>x.SuburbName.Equel(addrSuburb.SuburbName)).ToList().Count > 0)
{
// Insert Flow
db.Postcodes.Add(addrPostCode);
db.Suburbs.Add(addrSuburb);
db.States.Add(addrState);
db.Addresses.Add(addrCust);
}
else
{
// Update Flow
db.Postcodes.Attach(addrPostCode);
db.Suburbs.Attach(addrSuburb);
db.States.Attach(addrState);
db.Addresses.Attach(addrCust);
db.Entry(addrPostCode).State = EntityState.Modified;
db.Entry(addrSuburb).State = EntityState.Modified;
db.Entry(addrState).State = EntityState.Modified;
db.Entry(addrCust).State = EntityState.Modified;
}
db.SaveChanges();