跳到主要內容

發表文章

目前顯示的是 七月, 2017的文章

[C#]Entity Framework 5 增加TimeOut時間

Entity Framework 5 如何增加 DB連線的TimeOut時間,設定方式如下

需要針對進來的context 去做設定,網路上很多寫法,試了很久,才找到方式。

[code lang=CSharp]
(this._context as System.Data.Entity.Infrastructure.IObjectContextAdapter).ObjectContext.CommandTimeout = 時間;
[/code]

參考資料:
Set database timeout in Entity Framework
Orignal From: [C#]Entity Framework 5 增加TimeOut時間

[C#]當WebService 需要多載時的方法,需要注意MessageName

.NET的WebService是一個可以讓別人從Web參考的存取資料的方式;這算是一個古老的技術,早從.Net 1.1時代就開始了,由於傳遞的方式是走SOAP,傳遞格視為XML,所以資料容量比較大,直到現今已經到JSON傳遞資料的時代,WebService還是有人使用,畢竟還是有老舊系統存在的使用必要。

當原本被呼叫的WebService需要增加欄位的時候,就變成所有周邊系統都要接著一起修正,這樣一個大工程,難道不能有WebService的多載嗎?

於是乎,就著手寫看看
首先,需要將
C#
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
修改為
[WebServiceBinding(ConformsTo = WsiProfiles.None)]

再來就是,很重要
C#
[WebMethod(Description = "原本的呼叫", MessageName = "參數1")]
function 上方 MessageName 會去對應SERVICE後面op=參數
[WebMethod(Description = "原本的呼叫", MessageName = "參數2")]
function 上方 MessageName 會去對應SERVICE後面op=參數2

所以,當原本的呼叫到的參數=AAA,請在MessageName="AAA",不然,其他周邊系統就會通通掛掉,因為SOAP的設定關係。

如果出現此WEB服務不符合.....之類的字眼,那是因為本來就不建議這樣使用。

可以再Web.Config設定
ini
<webServices>
<conformanceWarnings>
<remove name="BasicProfile1_1"/>
</conformanceWarnings>
</webServices>


參考資料:
ASP.NET WebService 增加方法註解與多載設定
Orignal From: [C#]當WebService 需要多載時的方法,需要注意MessageName

[C#] 如何讓Linq + entity framework 可以達到with(nolock)

到底Linq對SQL做了什麼??

現在大部分人都使用linq+entity framework 去資料庫取得資料,但實際上在對資料庫存取SQL語法為何,確認大多數人並不了解的。

建議可以使用LINQPad 這套程式來去測試看看,避免不必要的語法造成資料的Lock,一個常用的資料表Lock會影響到其他作業的進行,甚至有可能造成TimeOut,而發出告警。

大家可以參考下列語法使用,針對select 部分,就不會去lock Table,也不會因為其他的資源lock 而造成TimeOut
c#
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required
, new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted }))
{
使用到的linq 語法
<pre>
<code>}
</code>
</pre>
其中使用到的TransactionScopeOption列舉 可以參考 .NET Framework 類別庫說明

裡面有用到三種方式,如果要nolock 請使用Required,請參考下列圖示


希望大家不要再被linq 所產生的語法所困惱了~
Orignal From: [C#] 如何讓Linq + entity framework 可以達到with(nolock)