如何更新实体框架中的相关数据6
我有一个实体地区
public partial class Territory
{
public Territory()
{
this.Employees = new HashSet<Employee>();
}
public string TerritoryID { get; set; }
public string TerritoryDescription { get; set; }
public int RegionID { get; set; }
public virtual Region Region { get; set; }
public virtual ICollection<Employee> Employees { get; set; }
}
我有一个实体地区
public partial class Region
{
public Region()
{
this.Territories = new HashSet<Territory>();
}
public int RegionID { get; set; }
public string RegionDescription { get; set; }
public virtual ICollection<Territory> Territories { get; set; }
}
在我的客户端应用程序中,我使Territory类和Region类的对象在数据库中插入和更新数据,并将这些对象传递给我的存储库类中的AddTerriory和UpdateTerriory方法。
Territory obj = new Territory();
obj.TerritoryID = "12123";
obj.TerritoryDescription = "test terriotry 1";
obj.RegionID = 9;
obj.Region = new Region{RegionDescription = "test region 1"};
public void UpdateTerriory(Territory territory)
{
using (var context = new travelEntities())
{
context.Territories.Attach(territory);
context.Entry(territory).State = EntityState.Modified;
context.SaveChanges();
}
}
}
public static void AddTerriory(Territory territory)
{
using (var context = new travelEntities())
{
context.Territories.Add(territory);
context.SaveChanges();
}
}
但它没有工作,并且抛出错误。 当我必须更新并插入Territory和Region时,我应该如何构建我的对象。 在更新Territory时,有时某些区域也会更新,所以我也必须更新。 当我们添加一个新的区域时,我们也会添加一个新的区域。 添加新地区时,我们不使用现有地区。
我必须在更新并插入区域和区域时如何构建对象?
编辑:我使用实体框架6数据库第一与Oracle 11i作为后端。
首先,为什么要使用区域标识符的字符串表示? 它可以是整数吗?
public void InsertOrUpdate(Territory territory)
{
using (var context = new TravelEntities())
{
context.Entry(territory).State =
string.IsNullOrWhiteSpace(territory.TerritoryID) ?
EntityState.Added :
EntityState.Modified;
if (territory.Region!=null)
{
context.Entry(territory.Region).State =
territory.Region.RegionID == 0 ?
EntityState.Added :
EntityState.Modified;
}
context.SaveChanges();
}
}
您可以将此方法作为通用方法,将实体和键选择器函数作为参数。
链接地址: http://www.djcxy.com/p/5739.html