【问题标题】:linq to entities - updating tables with new values not workinglinq to entity - 使用新值更新表不起作用
【发布时间】:2013-04-15 21:04:32
【问题描述】:

下面的代码将正确的值更新到 OBJECT_TYPES 表中,但是 OBJECT_ITEMS 表被覆盖了,但我不知道为什么。有人可以帮忙吗?

 var templateId = Request["id"].AsInt();
var dbcontext = new STDEntities1();
var query = dbcontext.OBJECT_TYPES.Where(o => o.ID == templateId);
var template = query.FirstOrDefault();
var newItem = new OBJECT_TYPES
{
    CATEGORY_ID = template.CATEGORY_ID,
    COMPANY_ID = template.COMPANY_ID,
    OBJECT_NAME = "** Select A Name **",
    HEIGHT = template.HEIGHT,
    WIDTH = template.WIDTH,
    TEMPLATE = template.ID
};


foreach (var field in template.OBJECT_ITEMS)
{
    newItem.OBJECT_ITEMS.Add(field);

}
dbcontext.OBJECT_TYPES.Add(newItem);
dbcontext.SaveChanges();

【问题讨论】:

  • OK - 如果我创建一个新项目并添加字段值(id 和外键除外)而不是 put .Add(field) ,它似乎可以工作。有没有更简洁的方法来做到这一点?

标签: entity-framework-4 linq-to-entities asp.net-webpages


【解决方案1】:

发生这种情况是因为您添加的字段实际上是一个由 dataContext/dbContext 跟踪的对象,甚至还有一个 id。所以这些值被覆盖了。

尝试创建一个新字段或尝试从上下文中分离该字段,然后将 Id/Primary 键设置为 0 并尝试再次插入。

【讨论】:

  • 谢谢 - 这是有道理的,并且有点像我自己的想法(以一种更模糊的方式)。干杯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多