我正在一个项目中工作,我需要使用Entity Framework将数据保存到不同的表。 我实际上正在保存地址。
我的表是:
地址(Id,地址line1,StateId,SuburbId,PostcodeId)
州(Id,StateName)
郊区(Id,SuburbName)
邮政编码(Id,PO)
如何插入新地址,如果表格中存在邮政编码和/或郊区,则使用现有地址作为新地址,否则将新郊区/邮政编码插入相关表格。 例如,正在插入一个新地址,但郊区已存在于郊区表中,因此我需要对现有地址进行约束,而不是在郊区表中创建(复制)郊区。
有意义吗?我没有尝试任何东西,因为我不知道该尝试什么。
这是我到目前为止所做的:
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();
如果我能有一个小例子,那就太好了!
答案 0 :(得分:1)
如果您可以决定天气,则应根据SuburbName中的插入或更新 郊区表你可以这样做。
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();