跳到主要內容

發表文章

目前顯示的是 7月, 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

[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)