决定在实体框架上插入或更新

ericpap

我编写了此函数,以便使用POCOs类将数据保存到EF4:

public void Guardar(Pedidos myPedido)
    {
        using (var context = new OhmioEntities())
        {
            if (myPedido.ID_Pedido == 0)
            {
                context.Pedidos.AddObject(myPedido);
            }
            else
            {
                context.Pedidos.Attach(myPedido);

                context.ObjectStateManager.ChangeObjectState(myPedido, System.Data.EntityState.Modified);                                        
            }

            context.SaveChanges();
        }
    }

现在,我想以通用的方式在基类上编写此代码。有没有一种方法可以决定是否需要在不使用ID的情况下进行UPDATE或INSERT?(在这种情况下为ID_Pedido),因为键字段上的名称随每种对象类型而变化。其余代码是通用的。我正在训练要知道我是否需要使用AddObject(新)或Attach(存在)。谢谢!

ericpap

我自己找到了!如果有人遇到相同的问题,这是解决方案。我写了这个方法:

public string getKey<T>() where T :new()
   {
       T _obj = new T();           
       return context.CreateEntityKey(_obj.ToString().Split('.')[2], _obj).EntityKeyValues[0].Key;
   }

Wich返回对象的第一个主键(在我的情况下就足够了)

并像这样使用它:

string sKey = getKey<GruposComerciales>();

现在,我可以在我的存储库中编写一个通用的saveorupdate方法。谢谢!!!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章