二月 16

這個服務推出好像有一段時間了,不過似乎知道的人不是很多

官方網頁寫的有神奇就有多神奇

簡單的說呢,這個服務就是Hinet版的網路硬碟

申請的方式可以參考HiNet網路保管箱 日誌

一般使用者能申請的空間是1GB,如果你是Hinet光世代的用戶則是2GB

怎麼使用呢?官方已經幫你準備好教學了

官方申請網址:





二月 12

ADO.Net Data Service 微軟大都是與 ADO.NET Entity Model來搭配使用

不過我還是習慣用LINQ to SQL 的DBML(不過使用此方法有些缺點,後面再提)

首先會遇到的第一個問題就是Data Service發生錯誤不會顯示相關訊息

解決這問題的方法就是把下面這行加到Data Service的Class上面就會顯示錯誤訊息了

<ServiceBehavior(IncludeExceptionDetailInFaults:=True)>


<ServiceBehavior(IncludeExceptionDetailInFaults:=True)> _
Public Class WDS
' TODO: 以您的資料類別名稱取代 [[class name]]
Inherits DataService(Of NorthwindEntities)

' 只呼叫一次方法初始化全服務原則。
Public Shared Sub InitializeService(ByVal config As IDataServiceConfiguration)
' TODO: 設定規則,指出哪些實體集及服務作業可見、可更新等等。
' 範例:
config.SetEntitySetAccessRule("*", EntitySetRights.All)
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All)
End Sub
End Class

接下來的問題就是DBML裡Table Key的問題

就算你在DBML裡把每張Table都設好Key也是不行

必需新增一個Class檔,而這個Class必需去Partial Class [DBML Table]

假如你的DBML裡有個Table叫Categories,這張表的Key是CategoryID,那麼就用以下程式碼

注意Key有大小寫之分


'有大小寫分別
<DataServiceKey("CategoryID")> _
Partial Class Categories
End Class

如果有1個Key以上的話程式碼如下面


<DataServiceKey("EmployeeID", "TerritoryID")> _
Partial Class EmployeeTerritories
End Class

你可以把這些程式碼放在同一個Class.vb檔裡方便管理

如果是幾張表手動加一加就算了,如果有好幾張那不就加到瘋掉

google了一下,果然有人已經寫好解決的方法了,有興趣的可以到這邊看看

不過程式是C#語法的,手癢改成了VB.Net語法(LINQ的那一個)

下面是ASP.Net的方式,如果你要用AP的方式產生還要修還一下文字


'使用方式

Dim db As New NorthwindDataContext
Dim sb As New System.Text.StringBuilder
GenerateDataServiceKeyAttributePartialClass _
(CType(db.GetType.Assembly, Reflection.Assembly), sb)
Response.Write(sb.ToString)

'--------------------------

Private Shared Sub GenerateDataServiceKeyAttributePartialClass _
(ByVal assembly As Reflection.Assembly, _
ByVal writer As System.Text.StringBuilder)

Dim tableInfoList = From t In assembly.GetTypes() _
Where t.GetCustomAttributes(GetType(TableAttribute), True).Length = 1 _
Select New With { _
.TypeName = t.Name, _
.KeyFields = (From p In t.GetProperties() _
Let columns = p.GetCustomAttributes(GetType(ColumnAttribute), True) _
Where columns.Length = 1 AndAlso DirectCast(columns(0), ColumnAttribute).IsPrimaryKey _
Select p.Name).ToList() _
}

For Each info In tableInfoList
writer.AppendFormat("<BR>" &amp;amp;amp;amp; "&amp;amp;amp;amp;lt;DataServiceKey(""{0}"")&amp;amp;amp;amp;gt; _" &amp;amp;amp;amp; "<BR>", String.Join(""", """, info.KeyFields.ToArray()))
writer.AppendFormat("Partial Class {0} " &amp;amp;amp;amp; "<BR> End Class", info.TypeName)
Next
End Sub

不過用LINQ to SQL要注意一個地方,就是文最上面所說的"缺點"

當你要對資料新增、刪除、修改時會發生錯誤

我猜想應該是你把以LINQ to SQL 做的Data Service這個參考加進來時

VS.NET還是把他轉成Entity Model,但是卻沒有對增、刪、修來實做,所以會發生錯誤

最明顯的判別就是Data Service裡沒有SubmitChanges()這個函式,不過卻有SaveChanges()這個函式

SaveChanges() 是ADO.NET Entity Model才有的東西

後來我有測試使用ADO.NET Entity Model去建立這個Data Service,結果是正常的

可能這就是微軟MSDN上找到的文章都是用ADO.NET Entity Model來當Data Service的ORMapping的中介的原因....

因為LINQ to SQL對Data Service的成熟度還不夠

不過對於ADO.NET Entity Model.......我想我還是放棄吧....





二月 09

從當兵到退伍一直到今天,我就一直覺得奇怪

明明我就有用中國信託的VISA金融卡刷卡消費怎麼點數累積一點動態也沒有

之前想說消費百元也沒有積到幾點也就算了

直到最近買保險也用中信的VISA金融卡去刷,過了2個月,積點還是一點動靜都沒有

今天我再也忍不住了,打電話去客服務才知道

如果有寄實體帳單的話,刷卡要3000元以上才有積點喔

如果申請電子帳單的話,則沒有這個限制,刷多少就積多少

最後還補了一句:這個方案實施很久了喔...........

看來我真的LAG很大...冏





二月 08

CPU:C300A

RAM:128M

跑WP很吃力吶

程式碼測試


Public Function GetList() As List(Of Customers)
Dim db As New NorthwindDataContext
Dim r = (From s In db.Customers).ToList
Return r
End Function