EF架構~終(zhong)于(yu)實現了(le)Update方法(fa)的統一
首(shou)先,由于(yu)統一(yi)更新需要把原實例復制一(yi)份過(guo)來,所(suo)以(yi)(yi)要有(you)一(yi)個主鍵統一(yi)的功(gong)能(neng),而我們(men)(men)知道,不可以(yi)(yi)把所(suo)有(you)表的主鍵都設置成統一(yi)的名(ming)稱,所(suo)以(yi)(yi),我們(men)(men)只能(neng)從一(yi)個虛(xu)擬的主鍵上想辦法,這時(shi),為(wei)了完成我們(men)(men)的需要,我們(men)(men)應該引(yin)進(jin)一(yi)個IEntity實體的統一(yi)接口,它有(you)一(yi)個屬性,我們(men)(men)使用ID表示,即它是統一(yi)實體的主鍵,由于(yu)int類型可以(yi)(yi)完全(quan)轉化為(wei)string,所(suo)以(yi)(yi)我們(men)(men)把類型定義為(wei)string
代碼如下:
namespace Entity
{
/// <summary>
/// 實體模塊統一接口
/// </summary>
public interface IEntity
{
/// <summary>
/// 為了主鍵統一,而手動設置的
/// </summary>
string ID { get; }
}
}
而userbas這個實體將去實現IEntity這個接口,它的代碼就變成了:
public class UserBas : IEntity
{
public UserBas()
{
this.Diaries = new List<Diary>();
this.User_Roles = new List<User_Roles>();
}
public string UserID { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public System.DateTime CreateDate { get; set; }
public System.DateTime UpdateDate { get; set; }
public int Status { get; set; }
public virtual ICollection<Diary> Diaries { get; set; }
public virtual ICollection<User_Roles> User_Roles { get; set; }
public virtual UserInfo UserInfo { get; set; }
#region IEntity Members
/// <summary>
/// 返回實體的主鍵
/// </summary>
public string ID
{
get { return UserID; }
}
#endregion
}
基礎工作做完后,我們就可以修改(gai)EntityRepository.cs這個數據統一操作實現(xian)類了,
看它的update部分:
#region IEntityRepository<TEntity> Members
public void Update(TEntity entity)
{
var entry = this._db.Entry(entity);
if (entry.State == EntityState.Detached)
{
var entityToUpdate = DbSet.Find(entity.ID);
EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<TEntity, TEntity>()
.Map(entity, entityToUpdate);
this.SaveChanges();
}
}
public void Update(IList<TEntity> list)
{
throw new NotImplementedException();
}
回到目錄