首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在特定时间修改DbSet?

如何在特定时间修改DbSet?
EN

Stack Overflow用户
提问于 2014-12-19 20:50:48
回答 1查看 134关注 0票数 0

我正在一个ASP.NETMVC 5网站上工作,我只想在新的一天、一个月和一年的开始时修改一次DbSet的元素,但是我在互联网上找不到任何这样做的例子,对如何做到这一点有帮助吗?

让我说:

代码语言:javascript
复制
public class File
{
    public int FileID { get; set; }

    public int Votes { get; set; }
}

代码语言:javascript
复制
public DbSet<File> Files { get; set; }

在新的一天开始时,我只想将文件的投票更改为0,只需一次:

代码语言:javascript
复制
var modFile = new File{ FileID = 2,  Votes = 0}; 
db.Entry(modFile).State = EntityState.Modified; 
db.SaveChanges();

在MVC 5项目中,我把这些代码放在哪里?怎么触发的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-19 21:57:56

如果您有一个外部服务层(独立于.NET),它包含您的对象(在您的例子中,File.cs等等)然后,使用内置的Windows 调度器是可以的(它在特定时间触发可执行代码,这是由用户定义的)。

为此,您可能需要创建一个控制台应用程序,该应用程序具有对Service和数据库连接的引用。

控制台应用程序

在Visual中,转到File -> New Project -> Visual C# -> Console Application。

在App.config文件中,可以将连接字符串添加到数据库中。例如:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="SchoolDBConnectionString"
    connectionString="Data Source=...;Initial Catalog=...;Integrated Security=true"
    providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>

然后,您可以设置对Service.dll的引用,该引用应该可以访问数据库上下文,例如DataContext db = MyService.Data.DataContext();

因此,与其:

代码语言:javascript
复制
var modFile = new File{ FileID = 2,  Votes = 0}; 
db.Entry(modFile).State = EntityState.Modified; 
db.SaveChanges();

你可以用:

代码语言:javascript
复制
db.Files.Where(s => s.Votes > 0).ToList().ForEach(s => s.Votes = 0);
db.SavesChanges();

您可以在发布模式下运行项目,并获取相关的dll和exe文件。然后,在“任务计划程序”中,您可以创建运行特定exe的任务。

服务

从技术上讲,你不需要有这种水平的隔离--但在我看来,这是一个很好的实践。您可以创建一个对MVC项目的引用,但我个人不会。

若要创建服务层.

右键单击您的解决方案( MVC应用程序所在的地方) ->添加->新项目-> Visual C# ->类库

在这个项目中,您应该在这里移动所有对象(File.cs等)。然后,您可以在MVC项目中创建对该项目的引用,方法是右键单击References并选择您刚刚创建的服务库。您可以对控制台应用程序执行同样的操作。

然后,这将在MVC应用程序和具体(业务)逻辑之间创建一个隔离层。

否则,如果您必须在ASP.NET中安排您的任务,请查看Scott的帖子 --他已经编译了一个在特定时间安排作业的库列表。然而,理解ASP.NET应用程序只应该真正处理用户请求和响应是很重要的--线程有点危险。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27573718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档