1
我正在從SubSonic遷移到EF4。在SubSonic模型中有一個名爲Save的函數,如果模型的關鍵字爲0,則插入完成,否則爲更新。實體框架4更新並插入一個函數
有沒有辦法像SubSonic一樣製作一個通用的保存功能?例如使用擴展方法?
我正在從SubSonic遷移到EF4。在SubSonic模型中有一個名爲Save的函數,如果模型的關鍵字爲0,則插入完成,否則爲更新。實體框架4更新並插入一個函數
有沒有辦法像SubSonic一樣製作一個通用的保存功能?例如使用擴展方法?
是的,但你必須自己做。嘗試是這樣的:
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();
}
}
我覺得更好一點的版本將是 公共靜態無效SaveOrUpdate(這件T實體),其中T:IEntity