Entity framework 4 linq到实体-使用新值更新表无效

Entity framework 4 linq到实体-使用新值更新表无效,entity-framework-4,linq-to-entities,asp.net-webpages,Entity Framework 4,Linq To Entities,Asp.net Webpages,下面的代码正在将正确的值更新到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(

下面的代码正在将正确的值更新到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();

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


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

发生这种情况的原因是您添加的字段实际上是dataContext/dbContext跟踪的对象,甚至有一个Id。因此,值被覆盖


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

确定-如果创建新项并添加字段值(除Id和外键外),则该操作似乎有效。如果创建新项并添加字段值,则添加(字段)。有更简洁的方法吗?好的-如果我创建一个新项目并添加字段值(id和外键除外),那么它似乎比put.Add(field)更有效。有没有一种更简洁的方法可以做到这一点?谢谢——这是有道理的,有点像我自己在想的(用一种更模糊的方式)。干杯。谢谢——这是有道理的,有点像我自己在想的(用一种更模糊的方式)。干杯