如何在实体框架中执行通用插入?

Vis*_*hal 3 generics entity-framework insert

我想在实体框架中执行通用插入.这就是我写的 -

static public void Insert<T>(MyEntities DataContext, T obj) where T : class
        {
            try
            {
                DataContext.AddObject(DataContext,obj);
                DataContext.SaveChanges();
            }
            catch (Exception e)
            {
                throw new Exception("Problems adding object" + e);
            }
        }
Run Code Online (Sandbox Code Playgroud)

但是你可以看到AddObject方法不是我想要的...它给出了异常,因为它需要我想要在对象中传递的enitysetname然后将该对象添加到我的数据库中.但我不能做AddtoObjectName(),因为我不知道对象.任何人都可以指出我正确的方向在这里..

Cra*_*ntz 6

在EF 4中,您可以:

var os = DataContext.CreateObjectSet<T>();
os.AddObject(obj);
DataContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

请删除堆栈吃try/catch.

  • @VJ:Craig的观点是你无论如何都要抛出异常,从失败的角度来看,这是正确的做法.如果要记录错误,则可以捕获它,记录它,然后抛出相同的异常而不是新的异常.如果您认为您的异常需要包含原始异常不具备的特殊信息,请继续使用该附加信息创建新异常,但将原始异常包含为InnerException. (2认同)