C# 实体框架6.1.1中的软删除属性和返回已删除行的查询
我观看了有关EntityFramework6.1.1的microsoft视频,并看到了软删除的示例。我正在使用这种方法,但是现在如何使用代码优先的方法来获取那些删除的行呢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
()我不知道这是否适合您的软删除实现,但它可能是您可以使用的备用方法。我使用这种技术。这意味着,如果我需要访问软删除记录,我必须编写自己的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。这是用来截取的墨水-