2010-09-06 66 views
1

我正在從SubSonic遷移到EF4。在SubSonic模型中有一個名爲Save的函數,如果模型的關鍵字爲0,則插入完成,否則爲更新。實體框架4更新並插入一個函數

有沒有辦法像SubSonic一樣製作一個通用的保存功能?例如使用擴展方法?

回答

8

是的,但你必須自己做。嘗試是這樣的:

public interface IEntity 
{ 
    int Id { get; set; } 
} 

... 

public void SaveOrUpdate<T>(T entity) where T : IEntity 
{ 
    using (var context = new MyContext()) 
    { 
    if (entity.Id == 0) 
    { 
     context.AddObject(entity); 
    } 
    else 
    { 
     context.Attach(entity); 
     context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified); 
    } 

    context.SaveChanges(); 
    } 
} 
0

我覺得更好一點的版本將是 公共靜態無效SaveOrUpdate(這件T實體),其中T:IEntity