创建更新插入函数 ASP.NET
Create Upsert Function ASP.NET
我是 asp.net 中的新人,我不知道这是否可行。我如何在 ASP.NET C# 中创建一个 UPSERT
函数,在其中更新实体,如果它不存在,它会自动插入该行。
我有这个collection/entity
名字travelRequest
namespace TRS.Entities
{
[Table("travelRequest")]
public class travelRequest
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int travelRequestID { get; set; }
//...
public virtual IList<trTravelDest> trTravelDest { get; set; }
//...
}
虚拟列表 trTravelDest
包含
namespace TRS.Entities
{
[Table("trTravelDest")]
public class trTravelDest
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int trTravelDestID { get; set; }
public int travelRequestID { get; set; } //fk from travelRequest table
public virtual travelRequest travelRequest { get; set; }
//...
}
}
我在更新请求时使用此函数 Update(travelRequest travelRequest)
我的问题是当我在 trTravelDest
中添加新行时它会忽略或不会插入。我怎样才能让它自动检测 travelRequest.trTravelDest
Update(parameter)
是否有新行并自动插入。
[HttpPost]
public ActionResult Update(travelRequest travelRequest)
{
if (TryUpdateModel(travelRequest))
{try {
db.SaveChanges();
// updateSuccessfull = true;
} catch{
// updateSuccessfull = false;}
}
var data = db.travelRequest.Find(travelRequest.travelRequestID);
return View("EditTr",data);
}
我认为 AddOrUpdate
方法正是您所需要的。
Adds or updates entities by key when SaveChanges is called. Equivalent
to an "upsert" operation from database terminology. This method can be
useful when seeding data using Migrations.
你使用的方法是这样的:
context.TravelRequests.AddOrUpdate(
x => x.trTravelDestID, // Assuming the travelRequest are unique on this key
travelRequestToUpsert);
context.SaveChanges();
第一个参数告诉函数 属性 它可以确定对象的唯一性。主键在这里是理想的。第二个(和第三个,...)是您要更新插入的对象。
我是 asp.net 中的新人,我不知道这是否可行。我如何在 ASP.NET C# 中创建一个 UPSERT
函数,在其中更新实体,如果它不存在,它会自动插入该行。
我有这个collection/entity
名字travelRequest
namespace TRS.Entities
{
[Table("travelRequest")]
public class travelRequest
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int travelRequestID { get; set; }
//...
public virtual IList<trTravelDest> trTravelDest { get; set; }
//...
}
虚拟列表 trTravelDest
包含
namespace TRS.Entities
{
[Table("trTravelDest")]
public class trTravelDest
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int trTravelDestID { get; set; }
public int travelRequestID { get; set; } //fk from travelRequest table
public virtual travelRequest travelRequest { get; set; }
//...
}
}
我在更新请求时使用此函数 Update(travelRequest travelRequest)
我的问题是当我在 trTravelDest
中添加新行时它会忽略或不会插入。我怎样才能让它自动检测 travelRequest.trTravelDest
Update(parameter)
是否有新行并自动插入。
[HttpPost]
public ActionResult Update(travelRequest travelRequest)
{
if (TryUpdateModel(travelRequest))
{try {
db.SaveChanges();
// updateSuccessfull = true;
} catch{
// updateSuccessfull = false;}
}
var data = db.travelRequest.Find(travelRequest.travelRequestID);
return View("EditTr",data);
}
我认为 AddOrUpdate
方法正是您所需要的。
Adds or updates entities by key when SaveChanges is called. Equivalent to an "upsert" operation from database terminology. This method can be useful when seeding data using Migrations.
你使用的方法是这样的:
context.TravelRequests.AddOrUpdate(
x => x.trTravelDestID, // Assuming the travelRequest are unique on this key
travelRequestToUpsert);
context.SaveChanges();
第一个参数告诉函数 属性 它可以确定对象的唯一性。主键在这里是理想的。第二个(和第三个,...)是您要更新插入的对象。