2012年12月26日 星期三

New transaction is not allowed because there are other threads running in the session

問題

在使用 Entity Framework 5.0 查詢並新增資料時,發生了這樣的例外

New transaction is not allowed because there are other threads running in the session

原因

經 Google 大神的查訪後,這篇告訴我們,原來當資料筆數多時,原來的connection 尚未 close,程式卻可能執行到新的 SaveChange 了,而引發新的 transaction。

例如

var payments = from i in _context.Payments
               select i;
foreach (var payment in payments)
{
    ...
    _context.SaveChanges();
}

解法

只要簡單的強迫 ToList(),將資料先查詢出來即可

var payments = (from i in _context.Payments
               select i).ToList();
foreach (var payment in payments)
{
    ...
    _context.SaveChanges();
}

Html5 常用 Tag

HTML5 New Tags

HTML5 新增了許多 Tag,這些Tag 部份著重在語意上。因此,什麼場景使用什麼Tag顯的相當重要。但UI看起來並沒有差異,故大部份的開發人員其實不太重視。
以下是我的翻譯,翻的不好請見諒。

header

header : The header element represents a group of introductory or navigational aids. 一群由簡介文或輔助瀏覽的元素。

section

section : The section element represents a generic section of a document or application. A section, in this context, is a thematic grouping of content, typically with a heading. 章節元素表達一個文件或應用程式的一個一般的章節。一個章節,通常有個標題,對其內的內容做簡單的專題。

section 的目的,通常用來製作成大綱(outline)。因此不要用 section 來作為套用樣式的手段。如果目的只是套用樣式,就使用 div  即可。

hgroup

hgroup: the heading of a section. The element is used to group a set of h1h6 elements when the heading has multiple levels, such as subheadings, alternative titles, or taglines. section 通常有個標題。若標題由 h1 ~ h6 組成,則 hgroup 將這些 h1~h6 內挑出一個最高等級做為此 section 的大綱。

如下例,hgroup 內含了h1, h2,則該section 會以h1的文字作為 outline

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
    <body>
        <h1>The Body</h1>
        <section>
            <hgroup>
                <h1>H1</h1>
                <h2>H2</h2>
            </hgroup>
        </section>
    </body>
</html>

image

nav

The nav element represents a section of a page that links to other pages or to parts within the page: a section with navigation links。一個由一組連結組成的章節。

article

The article element represents a self-contained composition in a document, page, application, or site and that is, in principle, independently distributable or reusable, e.g. in syndication. This could be a forum post, a magazine or newspaper article, a blog entry, a user-submitted comment, an interactive widget or gadget, or any other independent item of content. article 是一個獨立的組合,因此將 article 獨立出來或移到別的地方,都不會讓該 article 失去意義。

一個簡單的方式辨別 article 是否為適當的 tag,就是檢視該內容是否適合作為 RSS 的文章。

aside

The aside element represents a section of a page that consists of content that is tangentially related to the content around the aside element, and which could be considered separate from that content. Such sections are often represented as sidebars in printed typography. 支援性的文章。不看 aside 的內容並不影響對整個內容的了解。通常用於註解或廣告。

footer

The footer element represents a footer for its nearest ancestor sectioning content or sectioning root element. 包含章節結束的資訊。例如作者資訊,相關文章連結, copyright data。

2012年12月25日 星期二

EDMX 中,Entity Container Name 與 Namespace 必須不同名稱

EDMX 可以 compile ,卻出現 Error 10001:The symbol 'Entities' has already been defined.

同事來信問了這個問題。使用 entity framework 4.0,整個類別庫可以編譯,但 edmx 會出現如上的錯誤。

image

打開該專案,真的有這個問題。以 xml 來檢視時,也出現了下面的錯誤。

image

解法

上圖中,Schema Namespace (Entities) 與 EntityContainer Name(也是 Entities) 相同,會不會是名稱衝突啊?試著將其中一個改名後,果然解了這個問題。

至於為什麼會發生has already been defined.這樣的訊息嘛,看來 EntitySet 的 Name 與對應的EntityType 是指不同的東西,而NameSpace 與 EntityContainer 同名稱,會讓EntitySet 與 EntityType 同名,造成 edmx 內部名稱的衝突,因此發生錯誤。但此問題並非程式碼的 namespace 問題,因此 compile 會成功

2012年12月22日 星期六

實用的 HTML5 Outliner

Html5

開發 Html5 網頁時,常常沉淪在 UI 的視覺效果、功能的實作、資料庫的存取效能等看的出來的「需求」,卻忘了 Html5 的一個 Outline (大綱)特色。

大綱功能的出現,可以幫助瀏覽器快速的掌握該網頁的主要架構,有助於 SEO(搜尋引擎最佳化),甚至讓瀏覽器快速地呈現出網頁。因此,了解自己的網頁大綱是否正常,是一個必須面對的課題。

要了解大綱,就去看一看 Html5 的 spec 吧。

工具

有沒有實用的小功具可以幫助我們來檢查網頁的大綱呢?Google Chrome 上有個 extension:

https://chrome.google.com/extensions/detail/afoibpobokebhgfnknfndkgemglggomo

以 yahoo 新聞首頁來 check 一下吧。好像不錯啊!

image

檢查我自己在開發的網站一下。

SNAGHTML418bc80

哦!不妙!快點修改吧!Untitled …代表有大綱章節(section)卻沒有章節名稱(section name),就好像一本書的目錄( table of content)出現一堆的(未命名)一樣醜。誰也不看這樣的書吧。

參考

  1. HTML5的文檔大綱 : 寫的很詳細。懶惰的我,是寫不出這樣的好文章的。
  2. HTML5 語意標籤(SEMANTICS)與大綱(OUTLINE

Share with Facebook