我使用通用存储库和UnitOfWork模式来处理数据库。
现在我有一个Insert方法如下:
public virtual void Insert(TEntity entity)
{
//How to set up like this
entity.UpdatedDate = DateTime.Now.AddMonth(-1);
entity.ObjectState = ObjectState.Added;
_dbSet.Attach(entity);
_context.SyncObjectState(entity);
}
实体是一个代表表的类,如下所示:
public partial class AM_User
{
public int UserID { get; set; }
public string UserName { get; set; }
public Nullable<System.DateTime> CreatedDate { get; set; }
public Nullable<System.DateTime> UpdatedDate { get; set; }
}
该实体有一个名为CreatedDate
的列。我只想要一个地方输入CreatedDate的价值?我如何使用反射器来设置其值?
答案 0 :(得分:3)
你可以通过反思来做到这一点:
typeof(TEntity).GetProperty("UpdatedDate").SetValue(entity, DateTime.Now.AddMonth(-1));
答案 1 :(得分:1)
最安全的方法是确保所有实体类都实现相同的接口,例如:
public interface IEntity
{
DateTime CreatedDate { get; set; }
}
public class MyEntity : IEntity
{
public string Name { get; set; }
public DateTime CreatedDate { get; set; }
}
并更改您的存储库以对泛型类型进行约束:
public class Repository<TEntity> where T : IEntity
{
//etc...
}
现在您的插入功能可以更改为:
public virtual void Insert(TEntity entity)
{
entity.CreatedDate = DateTime.Now;
//etc...
}