3

Entityオブジェクトを受け取り、自動的に決定された主キーによって現在の値を見つけて更新する関数を書きたいと思います。

何か方向性を教えてください。

 public void Update(object entity)
 {
     using (var _db = new MyEntities())
     {
        var table  = _db.Set(entity.GetType());
//Here we should somehow find the entity object which primary key coincides with the one of entity
        var entityObj = table.FindObjectByPrimaryKey(entity);
        entityObj.CopyDataFrom(entity);
        _db.SaveChanges()

     }
}

これは可能ですか?

4

2 に答える 2

4

このようなエンティティの主キーを見つけることができます

ObjectContext objectContext = ((IObjectContextAdapter)_db).ObjectContext;
ObjectSet<YourEntity> set = objectContext.CreateObjectSet<YourEntity>();
IEnumerable<string> keyNames = set.EntitySet.ElementType
                                            .KeyMembers
                                            .Select(k => k.Name);

次に、リフレクションを使用してそれらの値にアクセスします。

于 2014-12-08T09:09:12.070 に答える
-2

答えを見つけました。

 public void Update(object entity)
 {   
     using (var _db = new MyEntities())
     {           
        _db.Entry(entity).State = System.Data.Entity.EntityState.Modified;             
        _db.SaveChanges();

     }
 }
于 2014-12-08T12:45:38.600 に答える