Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为通用存储库中的列设置值_C#_Repository Pattern - Fatal编程技术网

C# 为通用存储库中的列设置值

C# 为通用存储库中的列设置值,c#,repository-pattern,C#,Repository Pattern,我正在使用通用存储库和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)

我正在使用通用存储库和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; }
    }
公共部分类AM\U用户
{
public int UserID{get;set;}
公共字符串用户名{get;set;}
公共可为空的CreatedDate{get;set;}
公共可为Null的UpdateDate{get;set;}
}

该实体有一个名为
CreatedDate
的列。我只想在一个地方输入CreatedDate的值?如何使用reflector设置其值?

最安全的方法是确保所有实体类实现相同的接口,例如:

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 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...
}

您可以通过反射来实现:

typeof(TEntity).GetProperty("UpdatedDate").SetValue(entity, DateTime.Now.AddMonth(-1));

您可以通过反射来实现:

typeof(TEntity).GetProperty("UpdatedDate").SetValue(entity, DateTime.Now.AddMonth(-1));

嗨,大卫,谢谢你的帮助。但我的实体是一个表示表的类,由PowerTool生成,我不能按照您的建议再创建一个实体。我更新了问题以便更清楚地回答。请给出建议。实际上,由于生成的类是部分的,您可以添加自己的文件来扩展该类并向其添加接口。嗨,DavidG,谢谢您的帮助。但我的实体是一个表示表的类,由PowerTool生成,我不能按照您的建议再创建一个实体。我更新了问题以便更清楚地回答。请给出建议。实际上,由于生成的类是部分的,您可以添加自己的文件来扩展该类并向其添加接口。