2012年3月29日 星期四

Oracle for Entity Framework - LIKE 的查詢操作方式


資料庫使用 MS SQL Server 在 Entity Framework(EF)中如果要操作「like」查詢時,可以使用「Contains」,

例如以下的 LINQ Query:

var query = this.Products
    .Where(x=>x.ProductName.Contains("CH"))
    .OrderBy(x=>x.ProductID);

轉出的 SQL Command:

SELECT 
[Extent1].[ProductID] AS [ProductID], 
[Extent1].[ProductName] AS [ProductName], 
[Extent1].[SupplierID] AS [SupplierID], 
[Extent1].[CategoryID] AS [CategoryID], 
[Extent1].[QuantityPerUnit] AS [QuantityPerUnit], 
[Extent1].[UnitPrice] AS [UnitPrice], 
[Extent1].[UnitsInStock] AS [UnitsInStock], 
[Extent1].[UnitsOnOrder] AS [UnitsOnOrder], 
[Extent1].[ReorderLevel] AS [ReorderLevel], 
[Extent1].[Discontinued] AS [Discontinued]
FROM [dbo].[Products] AS [Extent1]
WHERE [Extent1].[ProductName] LIKE N'%CH%'
ORDER BY [Extent1].[ProductID] ASC

而當資料庫使用 Oracle 時,LINQ Query 的操作還是使用「Contains」,但有些地方還是不同的。

 

2012年3月28日 星期三

Dynamic LINQ + Entity Framework - Part.2:Dynamic Expression API (NuGet)


上一篇「Dynamic LINQ + Entity Framework - Part.1:MS SQL Server, LINQPad」我們說到了可以將 VS2010 Sample Code 的 DynamicQuery 加入到專案中,

讓我們的專案可以使用字串的方式讓原本強型別的 LINQ Query 能夠動態組合,用比較方便、簡單的方式來解決動態柴詢條件的需求,

必須要先說明的是,這樣的動態查詢就失去了在設計階段時的強制檢查,當動態組成的查詢條件有錯誤時,就必須等到執行階段才會知道,在專案建置時是無法發現到錯誤,

所以在專案中使用 LINQ DynamicQuery 時必須要小心,不要因為可以動態的組合查詢而讓各種可能發生錯誤的可能因素到處流竄,

盡可能限縮組合動態查詢的條件,例如物件屬性(對應到資料庫表格的欄位)就盡可能使用列舉的方式,讓程式開發人員只能使用物件中的屬性名稱,另外輸入的條件值也必須要做點安全性的防護,

前面幾項說明是提醒各位使用 DynamicQuery 時所要注意的地方。

前一篇所使用的是 VS2010 的 C# 4.0 Sample Code,所以對於仍使用 .Net 3.5 的專案就必須要另外去使用 VS2008 Sample Code 來建立 for .Net 3.5 的 DynamicQuery 類別庫專案,

如果你不想自己去建立 DynamicQuery 類別庫專案的話,開發環境是在 VS2010,不管專案是用 .NET 4.0 或 .NET 3.5,

都可以從 NuGet Gallery 中去把 DynamicQuery 給加入到專案中。

 

2012年3月27日 星期二

解決 Visual Studio 2010 出現的「未正確載入套件”VSTS for Database Professionals Sql Server Data-tier Application”」問題


近來在開啟 Visual Studio 2010 時都會出現這個視窗,而且都會出現好幾次,

SNAGHTML29e85c

之前因為不會妨礙到 Visual Studio 2010 正常的執行功能,而且也只有在開啟 VS2010 時才會出現,所以我就一直忽略這個錯誤訊息,

然而今天突然覺得這個錯誤訊總是出現還真的讓我蠻刺眼的,所以當下就來解決這個問題…

2012年3月26日 星期一

Dynamic LINQ + Entity Framework - Part.1:MS SQL Server, LINQPad


是的,動態LINQ查詢,這並不是一個新的LINQ查詢方式,早在 2008年1月7日時 Scott Guthrie 就已經介紹過了,

ScottGu’s Blog - Dynamic LINQ (Part 1: Using the LINQ Dynamic Query Library)

當時候是因應 VS2008 以及 .NET Framework 3.5 的 Release 而出現,那時候大家還正在摸索如何應用 LINQ,

雖然說現在大部分的專案中都會採用 LINQ to SQL or ADO.NET EF Framework,

使用並且操作強型別的資料集合對於設計階段有很大的幫助,

但是使用者的需求是千變萬化,永遠不可能照著系統規格走,甚至永遠都會有萬惡的「需求修改」出現,

這時候不論你用的技術如何強大或是功力多麼高深,永遠是無法戰勝客戶的需求以及老闆的壓力……

離題了…

對於動態查詢的功能,程式設計師使用組 SQL Command 查詢字串的方式是可以讓客戶的無限想像變換為可能,

但是到了使用LINQ查詢,好像一切都變得好複雜……

2012年3月14日 星期三

Sublime Text 2 - 好用的前端程式編輯器 Part.8 - 手動安裝Package



昨天有人在「Sublime Text 2 - 好用的前端程式編輯器 Part.6 另一種對齊的Package Abacus」提出了問題,

image

之前的Package安裝都是透過「Package Control」來進行,如果說要手動安裝Package的話,要如何操作呢?

這在之前的文章裡面都未曾提及,而這一篇就會針對這個問題來進行手動安裝Package操作說明,

而手動安裝的Package則選擇「BracketHighlighter」,這是一個可以讓括號高亮顯示的實用小套件,

在文末也會有手動安裝Package的操作視訊畫面,讓各位可以更加清楚了解整個操作的流程。


2012年3月13日 星期二

Sublime Text 2 - 好用的前端程式編輯器 Part.7 - Goto … 操作說明 + Goto Symbol


使用Sublime2編輯文件的時候,會希望有以下的操作功能:

  • 能夠更加快速且方便地在文件之間跳轉
  • 能夠很快地在文件中找到定義的符號(曾經使用了那些變數名稱,卻一時之間無法很快找到時)
  • 可以快速的移動到文件中指定的行數
  • 能夠列出程式文件中的function,並且快速移到function的位置
  • 在程式文件可以快速移到目前使用function的位置(前項仍須透過Command Palette,而此項就是直接跳到function)

前面四項的功能要求,其實可以透過Sublime2既有的「Goto …」功能來達成,而最後一項功能需求就必須透過安裝Package「Goto Symbol」來達成囉,接下來的內容就會介紹如何操作這些功能需求。

2012年3月12日 星期一

ASP.NET MVC 3 分頁 - 使用jQuery.Templates + MvcSimplePostPager


上一篇文章「ASP.NET MVC 3 分頁 - 使用jQuery.Templates + jQuery Pagination Plugin」裡,

我們使用了「jQuery Pagination Plugin」這個jQuery Plugin來做為前端頁面Pager的解決方案,

然而這個 Pager 所提供的UI介面是有些陽春,

image

假如想要增加一些資料在上面讓使用者可以得到更多資訊的話,就要去更改「jquery.pagination.js」程式內容,

但其實在之前介紹「資料分頁」的時候,我們就已經建立了 MvcSimplePager 與 MvcSimplePostPager ,

這兩種Pager就已經提供了相當充足的分頁資訊,

接下來就會介紹如何以前端的jQuery Ajax的方式與jQuery Templates來完成分頁的需求功能。

 

2012年3月10日 星期六

ASP.NET MVC 3 分頁 - 使用jQuery.Templates + jQuery Pagination Plugin


上一篇「ASP.NET MVC 3 資料套用範本 - 使用jQuery.Templates」介紹了如何在ASP.NET MVC 3中使用jQuery.Templates,

而本部落格也有一系列的分頁文章「資料分頁」,所以這一次就來介紹如何在ASP.NET MVC 3中使用jQuery.Templates完成分頁的功能,

其實要取得分頁的資料來源是比較容易的,只要在後端處理好每次要取得分頁的資料量與資料內就可以,

之前一系列「資料分頁」的文章中,我有建立了一個有關生成Pager的HtmlHelper,

而每一次的分頁不管是GET方式還是POST,從前端傳送需求到後端,後端會連同Pager的內容也一併生成且送回到前端顯示,

因為我們使用jQuery.Templates所使用的資料是JSON,只會是包含分頁資料本身,也就是說頁面上的Pager我們要在前端處理,

本篇文章將會在前端使用「jQuery Pagination Plugin」來做為前端的Pager,以作為我們前端分頁操作介面的解決方案。

2012年3月9日 星期五

ASP.NET MVC 3 資料套用範本 - 使用jQuery.Templates


在ASP.NET MVC中想要使用AJAX來顯示一個頁面中某部分資料時,此情境下大部分都會使用PartialView的方式,

而這個類似的作法也曾經在之前的文章有介紹過:

ASP.NET MVC - 資料分頁(4) MvcSimplePostPager + AJAX

雖然那一篇文章內容是用ASP.NET MVC 2來開發,不過分頁內容的顯示就是使用PartialView(部分檢視)方式,

讓每一個分頁資料的顯示是用jQuery以及AJAX的方式向後端取得該分頁的內容。

 

然而有的時候我們取得的資料並不會直接給我們一個已經Render好的部分頁面內容,例如:JSON,

這個時候就必須在前端頁面中以JavaScript程式來套用JSON資料然後顯示在頁面上,

在之前的專案中就會看到專案其他成員處理這個部分時會在JavaScript程式中去組HTML碼,

常常一個不小心把HTML碼給組錯,或是同樣一段HTML碼會重複的出現在JavaScript的程式當中,

當時看到就覺得這樣的方式蠻不好的,而希望把另一種方式介紹給當時的專案成員來使用,

不過成員對於JavaScript或是jQuery的熟練程度不一,無法讓他們一體適用這種方法,在當時覺得蠻可惜的。

 

當時想要介紹的方法就是在JavaScript中使用範本(jQuery.Templates)的方式,

把動態取得的資料套用在事先組織好的HTML範本,然後再Render到頁面上顯示,

這篇文章接下來就會來演練這方式。

2012年3月3日 星期六

Sublime Text 2 - 好用的前端程式編輯器 Part.6 另一種對齊的Package Abacus


上一篇介紹的 Sublime Text 2 Package「Alignment」是最多人使用的對齊套件,然而也有另一個Package也是做同樣的操作功能,然而卻有一些的不同,所以這邊也同樣介紹給大家,

image

 


2012年3月2日 星期五

Sublime Text 2 - 好用的前端程式編輯器 Part.5 使用Alignment對齊你的Code


我還不算是個有嚴重程式碼潔癖的人,但至少程式碼看起不要太過於雜亂就好,

但是在程式碼中看到一些亂亂的地方時,也還是會覺得礙眼…

image

如上圖的情況,如果這種沒有對齊的情況不是很多的情況下,很多人一定會選擇忽略,或是動手去調整一下,

假如這個情況出現的越來越頻繁,或是沒有對齊的地方太多,久而久之就不會多花時間來整理。

Sublime Text 2有個Package「Alignment」就可以幫我們解決這個問題,

大部分介紹Sublime2的部落格文章也一定會提到這個Package,當然這裡也不免俗的也要來介紹啦。

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。