iT邦幫忙

DAY 4
4

OpenAccess ORM for Oracle 實戰演練系列 第 4

OpenAccess ORM for Oracle 實戰演練 Day 04

  • 分享至 

  • xImage
  •  

OpenAccess快速入門02
OpenAccess 快速入門將協助我們熟悉 OpenAccess,第二篇我們就來寫程式,驗證是否能順利透過 OpenAccess 存取 Oracle 資料庫吧。
建好 SecondModel 後,我們終於要寫程式了。碼農啊,沒寫程式手就會癢啊!首先,我們在 Model 專案中,新增一個類別,並撰寫如下的程式碼:

Public Class VerifyRLinq
    Private cxt As SecondModel

    Public Sub New()
        cxt = New SecondModel()
    End Sub

    Public Function GetEmployeesCount() As Integer
        Dim query = From x In cxt.Employees Select x
        Return query.Count()
    End Function

End Class

好簡單的一個類別,目的就是要測試我們建立的 Model 是不是能順利運作,所以很簡單,就這樣。接著,因為只是簡單的測試,暫時不要大費周章去建立畫面,所以我們乾脆在方案中,新增一個單元測試專案,名為 TestOpenAccessModel:

接著把 OpenAccessWebApp01Model 加入參考:

然後把預設的 UnitTest1.vb 更名為「VerifyRLinqTest.vb」,並撰寫如下的程式:

Imports System.Text
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports OpenAccessWebApp01Model

<TestClass()> Public Class VerifyRLinqTest

    <TestMethod()> _
    Public Sub GetEmployeesCount_筆數必大於零()
        Dim target As VerifyRLinq = New VerifyRLinq
        Dim expected As Integer = 0
        Dim actual As Integer = 0
        actual = target.GetEmployeesCount()
        Assert.IsTrue(actual > expected)
    End Sub

End Class

這個測試方法非常簡單,因為我們只是要測試能不能正確透過 OpenAccess 存取資料庫,所以呼叫取得員工資料筆數的方法,而且斷言一定大於 0。現在,執行【建置/建置方案】命令,我們會發現,建置是成功,但是測試失敗了。如果測試沒有自動執行,我們也可以於【測試總管】中,手動啟動測試,取得測試結果:

注意錯誤訊息:

Telerik.OpenAccess.OpenAccessException: System.Configuration.ConfigurationErrorsException: A connection string was referenced by name 'XE11GConn' but could not be resolved through the web.config or the executables app.config file.

XE11GConn 不存在於 web.config 或 app.config!這是一個非常容易犯的錯誤。還記得連線字串設定在那裡嗎?在 Model 專案的 app.config 中,但是我們現在是在單元測試專案啟動程式,引用了 Model 的 DLL,所以當然找不到連線字串囉!

解決方法當然就是在單元測試專案中,新增一個組態檔(app.config),然後把 Model 的 app.config 中,連線字串區段整個複製過來:

現在,我們再來執行一次測試:

順利通過測試囉!表示我們已經成功透過 OpenAccess 取得資料庫中的資料了。


上一篇
OpenAccess ORM for Oracle 實戰演練 Day 03
下一篇
OpenAccess ORM for Oracle 實戰演練 Day 05
系列文
OpenAccess ORM for Oracle 實戰演練26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0

我要留言

立即登入留言