none
编程产生的新实体对象如何更新到数据库,使用Entity Framework RRS feed

  • 问题

  • 利用EDM产生一个数据模型,其中有一个类Customer,对应的实体集是Customers,

    我编程产生一个新的对象:

    Customer entity=new Customer();

    entity.ID="345";

    entity.Name="张三";

    entity.Address="张三家的地址";

    请问,我如何将entity更新(不是插入)到数据库中,注意,数据库中已经有ID="345"的记录了

    (此时entity.EntityKey是null,使用context.GetObjectByKey(entity)不成功)

    2010年6月17日 4:05

答案

  • 你要的是修改记录吧!

    Customer entity=查询出来entity.ID="345"的数据,

    entity.Name="张三";

    entity.Address="张三家的地址";

    修改值,但是主键一定不要再重复赋值了。

    这是我写的一个例子。

    Module SaveModule = SaveData as Module;

                using (ForeigntradeEmailEntities entity = new ForeigntradeEmailEntities(entityConnection))

                {

                    try

                    {

                        Module CurrSaveModule = entity.Module.First(o => o.ModuleID == SaveModule.ModuleID);

                        CurrSaveModule.ParentID = SaveModule.ParentID;

                        CurrSaveModule.IsLeaf = SaveModule.IsLeaf;

                        CurrSaveModule.URL = SaveModule.URL;

                        CurrSaveModule.ModuleName = SaveModule.ModuleName;

                        CurrSaveModule.MSort = SaveModule.MSort;

     

                        entity.SaveChanges();

     

                        return true;

                    }

                    catch

                    {

                        return false;

                    }

                }

    这样就可以更新数据了

    2010年6月17日 6:12

全部回复

  • 你要的是修改记录吧!

    Customer entity=查询出来entity.ID="345"的数据,

    entity.Name="张三";

    entity.Address="张三家的地址";

    修改值,但是主键一定不要再重复赋值了。

    这是我写的一个例子。

    Module SaveModule = SaveData as Module;

                using (ForeigntradeEmailEntities entity = new ForeigntradeEmailEntities(entityConnection))

                {

                    try

                    {

                        Module CurrSaveModule = entity.Module.First(o => o.ModuleID == SaveModule.ModuleID);

                        CurrSaveModule.ParentID = SaveModule.ParentID;

                        CurrSaveModule.IsLeaf = SaveModule.IsLeaf;

                        CurrSaveModule.URL = SaveModule.URL;

                        CurrSaveModule.ModuleName = SaveModule.ModuleName;

                        CurrSaveModule.MSort = SaveModule.MSort;

     

                        entity.SaveChanges();

     

                        return true;

                    }

                    catch

                    {

                        return false;

                    }

                }

    这样就可以更新数据了

    2010年6月17日 6:12
  • 可以试试ObjectContext.ApplyCurrentValues方法~
    本帖内容仅供参考,没有任何保证. The post is for reference only, without any warranty.
    2010年6月18日 8:57
    版主
  • 可以试试ObjectContext.ApplyCurrentValues方法~
    本帖内容仅供参考,没有任何保证. The post is for reference only, without any warranty.

    使用ObjectContext.ApplyCurrentValues之前,必须先用context.GetObjectByKey(entity),此时entity.EntityKey是null,使用context.GetObjectByKey(entity)不成功
    2010年6月22日 13:56