Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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# 实体框架6.1.1中的软删除属性和返回已删除行的查询_C#_Entity Framework - Fatal编程技术网

C# 实体框架6.1.1中的软删除属性和返回已删除行的查询

C# 实体框架6.1.1中的软删除属性和返回已删除行的查询,c#,entity-framework,C#,Entity Framework,我观看了有关EntityFramework6.1.1的microsoft视频,并看到了软删除的示例。我正在使用这种方法,但是现在如何使用代码优先的方法来获取那些删除的行呢 ()我不知道这是否适合您的软删除实现,但它可能是您可以使用的备用方法。我使用这种技术。这意味着,如果我需要访问软删除记录,我必须编写自己的sql查询。我是这样做的: public override void Delete(int id) { var files = SqlQuery(@"SELE

我观看了有关EntityFramework6.1.1的microsoft视频,并看到了软删除的示例。我正在使用这种方法,但是现在如何使用代码优先的方法来获取那些删除的行呢


()

我不知道这是否适合您的软删除实现,但它可能是您可以使用的备用方法。我使用这种技术。这意味着,如果我需要访问软删除记录,我必须编写自己的sql查询。我是这样做的:

    public override void Delete(int id)
    {
        var files = SqlQuery(@"SELECT * FROM dbo.PropertyFiles WHERE 
            IsDeleted = 1 AND DATEADD(MINUTE, 30, DeletedAt) < GETUTCDATE()");
        foreach (PropertyFile file in files)
        {
            try
            {
                File.Delete(file.FilePath);

            }
            catch (Exception ex)
            {
                //TODO log the errors encountered when attempting to delete
            }
        }
        base.Delete(id);
    }
DbSet
有一个方法,可以创建一个原始SQL查询,该查询将返回实体

我的通用存储库中有此方法:

   protected IEnumerable<T> SqlQuery(string sql, params object[] parameters)
    {
        if (String.IsNullOrEmpty(sql))
            throw new ArgumentException("sql is null or empty.", "sql");

        DbSqlQuery<T> q = Context.Set<T>().SqlQuery(sql, parameters);
        return q;
    }
受保护的IEnumerable SqlQuery(字符串sql,参数对象[]参数)
{
if(String.IsNullOrEmpty(sql))
抛出新ArgumentException(“sql为null或空。”,“sql”);
DbSqlQuery q=Context.Set().SqlQuery(sql,参数);
返回q;
}
我可以从继承我的通用存储库的存储库中调用它,如下所示:

    public override void Delete(int id)
    {
        var files = SqlQuery(@"SELECT * FROM dbo.PropertyFiles WHERE 
            IsDeleted = 1 AND DATEADD(MINUTE, 30, DeletedAt) < GETUTCDATE()");
        foreach (PropertyFile file in files)
        {
            try
            {
                File.Delete(file.FilePath);

            }
            catch (Exception ex)
            {
                //TODO log the errors encountered when attempting to delete
            }
        }
        base.Delete(id);
    }
public override void Delete(int-id)
{
var files=SqlQuery(@“从dbo.PropertyFiles中选择*,其中
IsDeleted=1和DATEADD(分钟,30,删除日期)
我现在不想看整个视频。该技术是否使用鉴别器过滤删除的项目?就像这里的解决方案一样——我链接的不是视频,而是包含代码的github。这是用来截取的墨水-