星期五, 7月 23, 2010

用 LinqPad 來使用 Entity Framework

最近再研究 Entity Framework,也試著用 Entity Frmaework 來寫專案,發覺真的需要一個工具可以幫我快速開發,以及驗證產出來的SQL Statement到底好不好,朋友就推薦我用 LinqPad,上官方網站也說可以支援 Enitity Framework,所以就直接下載來試用了,不過在 LinqPad 使用 Entity Frmaework,官方網站文字上並沒有說得很詳細,這裡簡單的介紹如何使用 LinqPad 來使用 Entity Framework

首先先新增一個 Class 專案

image

新增完,就可以在專案裡面新增要新增的 edmx 類型的檔案

image

新增 ADO.NET Entitiy Data Model

image

內容選擇從資料庫取出來

image

這裡就是最熟悉不過的設定了

image

繼續設定下去吧

image

這裡我是把所有的 Table 加進去

image

產完了,我們現在來編譯一下,因為編譯才會生出 dll 檔案

image

編譯完成後,就可以開啟 LinqPad 來設定啦,首先按 Add connection

image

在 Path to Custom Assembly 選擇我們剛剛編譯出來的 dll 檔案

image

然後跟著按下確定

image

接的設定都會幫你設定好啦,你可以按一下 Test 來確定有沒有連線錯誤

SNAGHTML27d3a3

之後就可以成功的使用 Entity Framework 啦

image

很簡單吧,讚..

而且這樣用 dll 方式產生出來的連接,如果我們在資料庫專案上對 edmx 加了哪些關聯,或是多了哪些欄位,我們就可以在 LinqPad 上面馬上使用,這樣也很貼近專案的開發方式,因為有時真的蠻需要在 edmx 上面動手腳的,所以這裡真的推薦有在用 Enitity Framework 開發的使用者,可以去載來用用

PS:用Linq to SQL 也可以用這一招來建立連線

參考:
http://msdn.microsoft.com/en-us/library/aa697427%28VS.80%29.aspx
http://www.linqpad.net/

星期日, 7月 18, 2010

(加強版) jquery 簡單新增移除 table rows

之前有寫一個簡單的範例 jquery 簡單新增移除table rows ,因為有人留言說如果可以指定行數來刪除 row 那就更有實用性了,所以我就寫了一個改良版的,這個範例結合了後端用 ajax 抓取 server 端的時間,還有用 jquery 1.3 以後才有的 .live() 的函式來處理,程式更短更簡單,直接看code吧!

View

<style type="text/css">
table
{
border: solid 1px red;
border-collapse: collapse;
}
table td
{
border: solid 1px red;
width: 150px;
}
</style>

<table width="450px" cellpadding="0" cellspacing="0">
<thead>
<tr>
<td>新增時間</td>
<td>內容</td>
<td>##</td>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td>r</td>
<td><a href="javascript:;">刪除row</a></td>
</tr>
</tbody>
<tfoot>
<tr>
<td></td>
<td></td>
<td>
<%= Ajax.ActionLink("新增一筆", "GetNow",
new AjaxOptions() {
OnSuccess="CreateRow",
HttpMethod="POST",
}) %>
</td>
</tr>
</tfoot>
</table>
<script type="text/javascript">
function CreateRow(data)
{
var time = data.get_data();
var newRow = $('tbody tr:first').clone();
newRow.find('td:first').append(time);
$('tbody').append(newRow);
}
function DeleteRow(elem)
{
var row = $(elem).parents('tr');
var index = $('tr').index(row);
if (index != 1)
row.hide();
}
$(document).ready(function ()
{
$('tbody a').live('click', function ()
{
DeleteRow(this);
});
});
</script>

controller

public class TableController : Controller
{
//
// GET: /Table/

public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult GetNow()
{
return Content(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
}
}

有圖有真相

image

這樣就實用性就很高啦..讚..
參考:
http://msdn.microsoft.com/en-us/library/dd394709.aspx
http://api.jquery.com/live/