我有一個實體datetime屬性ImageModifiedDate
它存儲圖像的最後修改日期。如果我更改圖像可以自動更新此屬性?我的意思是可以將此屬性綁定到文件(圖像),並且可以在實際文件更改時自動更改該屬性?如何自動更新包含文件上次修改日期的屬性?
我需要這個在asp.net mvc 3應用程序,但我認爲它也可以標記爲C#問題。
編輯:我存儲在文件流的圖像,而不是在數據庫
我有一個實體datetime屬性ImageModifiedDate
它存儲圖像的最後修改日期。如果我更改圖像可以自動更新此屬性?我的意思是可以將此屬性綁定到文件(圖像),並且可以在實際文件更改時自動更改該屬性?如何自動更新包含文件上次修改日期的屬性?
我需要這個在asp.net mvc 3應用程序,但我認爲它也可以標記爲C#問題。
編輯:我存儲在文件流的圖像,而不是在數據庫
這似乎是你有兩件一個問題:更新數據庫中的最後修改日期,並且知道該數據庫有更改,然後顯示更改。
首先,創建一個Windows服務或此類程序並讓它使用FileSystemWatcher來監視文件更改。然後它可以用新信息更新數據庫。
至於在Web應用程序中顯示更改,您可以讓應用程序通過AJAX進行輪詢,並更新顯示日期的HTML。這樣,您不必在日期發生變化時更新整個頁面。
您需要通過圖像檢查某些服務並檢查它們是否已更新。它需要做這樣的事情:
foreach (var image in dbcontext.Images)
{
var filename = image.Filename;
var lastModified = System.IO.File.GetLastWriteTime(filename);
if (lastModified != image.LastModified)
{
image.LastModified = lastModified;
}
}
dbcontext.SaveChanges();
請記住,你有一個權衡的決定。您可以不斷運行它,但這會降低您的服務器速度。或者,您可以每分鐘或每五分鐘運行一次,具體取決於您擁有多少圖像以及完成該過程需要多長時間。
另外,您可以使用FileSystemWatcher
,東西沿着這些路線(記住我還沒有測試此代碼,但它足以讓你開始):
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "your path here";
watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
watcher.Filter = "*.jpg";
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);
private static void OnChanged(object source, FileSystemEventArgs e)
{
// Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
private static void OnRenamed(object source, RenamedEventArgs e)
{
// Specify what is done when a file is renamed.
Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
}
我將圖像存儲在實際的文件流中,而不是存儲在數據庫中。我有成千上萬的圖像,如果我每分鐘運行一次,我認爲它會真的減慢服務器速度。還有其他方法可以做到嗎?此外,我想要圖像立即更新(如果它可能可以完成)。 – 2013-02-19 14:30:03
可能通過使用'FileSystemWatcher'? @AlekseiChepovoi查看更新。 – 2013-02-19 14:31:53
哪裏像駐留?在與ASP.NET應用程序相同的服務器上?你需要如何保持最新?到第二個?當你說「實體」時,你是指實體框架? – 2013-02-19 14:21:55
在同一臺服務器上;將是偉大的,它是一秒鐘;不,我使用Linq2Sql,我的意思是我的模型 – 2013-02-19 14:22:58
看看[FileSystemWatcher](http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx)類,用於監視更改文件。 – 2013-02-19 14:31:42