connectionString 連線字串
metadata=res://*/Models.TestModel.csdl|res://*/Models.TestModel.ssdl|res://*/Models.TestModel.msl;
provider=System.Data.SqlClient;
provider connection string="
data source=.; //資料庫IP
initial catalog=TestDB; //預設資料庫名稱
persist security info=True; //是否隱藏密碼
user id=XXXXXXXX; //資料庫ID
password=**********; //資料庫密碼
MultipleActiveResultSets=True; //啟用多重作用結果集??????
App=EntityFramework"
http://msdn.microsoft.com/zh-tw/library/cc716756(v=vs.110).aspx
http://blog.miniasp.com/post/2009/07/17/SQL-Connection-String-Persist-Security-Info-Explained.aspx
http://msdn.microsoft.com/zh-tw/library/h32h3abf(v=vs.110).aspx
2014年4月27日 星期日
[Razer] foreach in Model Sample
@model IEnumerable<_01_model.Models.Opera>
<table border="1">
<tr>
<th>@Html.DisplayNameFor(m => m.Title)</th>
<th>@Html.DisplayNameFor(m => m.Year)</th>
<th>@Html.DisplayNameFor(m => m.Composer)</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(mi => item.Title)</td>
<td>@Html.DisplayFor(mi => item.Year)</td>
<td>@Html.DisplayFor(mi => item.Composer)</td>
</tr>
}
</table>
[C#] 何謂泛型
from http://www.cnblogs.com/zhili/archive/2012/11/03/GenericType.html
在生活中,我們經常會看到模子,像我們平常生活中用的桶子就是一個模子,我們可以用桶子裝水,也可以用來裝油,牛奶等等,然而把這些都裝進桶子裡面之後,它們都會具有桶的形狀(水,牛奶和油本來是沒有形的),即具有模子的特徵。
同樣,泛型也是像桶子一樣的模子,我們可以用int類型,string類型,類去實例化泛型,實例化之後int,string類型都會具有泛型類型的特徵(就是說可以使用泛型類型中定義的方法,如List<T>泛型,如果用int去初始化它後,List<int>的實例就可以用List<T>泛型中定義的所有方法,用string去初始化它也一樣,和我們生活中的用桶裝水,牛奶,油等非常類似)
在生活中,我們經常會看到模子,像我們平常生活中用的桶子就是一個模子,我們可以用桶子裝水,也可以用來裝油,牛奶等等,然而把這些都裝進桶子裡面之後,它們都會具有桶的形狀(水,牛奶和油本來是沒有形的),即具有模子的特徵。
同樣,泛型也是像桶子一樣的模子,我們可以用int類型,string類型,類去實例化泛型,實例化之後int,string類型都會具有泛型類型的特徵(就是說可以使用泛型類型中定義的方法,如List<T>泛型,如果用int去初始化它後,List<int>的實例就可以用List<T>泛型中定義的所有方法,用string去初始化它也一樣,和我們生活中的用桶裝水,牛奶,油等非常類似)
[MVC] 未包含 'GetEnumerator' 的公用定義
Author: Mango
|
at:凌晨2:10
|
Category :
MVC
|
使用
@foreach (var oCompany in Model)
在view中發生「....未包含 'GetEnumerator' 的公用定義....」的錯誤
這時候在最上面的model宣告要增加IEnumerable
變成 @model IEnumerable<_01_model.Models.CompanyMain>
[MVC] ADO.NET - DBcontext撈資料的用法
Author: Mango
|
at:凌晨1:21
|
Category :
MVC
|
用ADO.NET與資料庫連線,產生DBcontext,在controoller撈資料的語法
//LinQ
public ActionResult Details(int? CM_PKey)
{
List<CompanyMain> query = (from c in context.CompanyMains
where c.CM_PKey == CM_PKey
select c).Take(1).ToList();
return View(query[0]);
}
//SqlQuery
public ActionResult Details(int? CM_PKey)
{
List<CompanyMain> liCompanyMain = context.CompanyMains.SqlQuery(
@"select * from CompanyMain Where CM_PKey IN ({0})", CM_PKey.ToString()).ToList();
return View(liCompanyMain[0]);
}
//FirstOrDefault
public ActionResult Details(string sPermID)
{
CompanyMain oCompanyMain = context.CompanyMains.FirstOrDefault<CompanyMain>(o => o.CM_PermID == sPermID);
return View(oCompanyMain);
}
//Find
public ActionResult Details(int? CM_PKey)
{
CompanyMain oCompanyMain = context.CompanyMains.Find(CM_PKey);
if (oCompanyMain == null)
return HttpNotFound();
return View(oCompanyMain);
}
//Join View
public ActionResult DetailsCompanyOpera(int id)
{
List<ViewCompanyMainOpera> liViewCompanyMainOpera = context.ViewCompanyMainOperas.SqlQuery(
@"select * from ViewCompanyMainOpera Where CM_PKey IN ({0})", id.ToString()).ToList();
return View(liViewCompanyMainOpera[0]);
}
2014年4月25日 星期五
[MVC] Code First 定義資料model 常用的屬性設定
Author: Mango
|
at:下午6:25
|
Category :
MVC
|
參考
http://www.dotblogs.com.tw/mrsunboss/archive/2013/01/03/86688.aspx#errormessage
[Table("Operas")] //資料表名稱
public class Opera
{
//在 EF Code First中,如果把屬性設為Id且型別設為int,會自動識別出這個欄位就是主索引鍵,
//但如果你想要把屬性名稱自行命名例如uid,就必須告宣告這個是主索引鍵。
[Key]
[DisplayName("編號")]
public int OperaId { get; set; }
[MaxLength(100)] //最大長度
[MinLength(1)] //最小長度
[Required(ErrorMessage = "歌劇名稱不可以為空白")] //宣告必填欄位(NOT NULL)
[DisplayName("歌劇名稱")] //顯示欄位的名稱
public string Title { get; set; }
[EmailAddress] //驗證mail格式
[DisplayName("Mail")]
public string Email { get; set; }
[Url] //網址格式驗證
public string BlogUrl { get; set; }
[DisplayName( "年代" )]
[Range(1600, 2100, ErrorMessage = "範圍值為1600 ~ 2100")]
public int Year { get; set; }
[Required]
[DisplayName("作者")]
public string Composer { get; set; }
}
http://www.dotblogs.com.tw/mrsunboss/archive/2013/01/03/86688.aspx#errormessage
[Table("Operas")] //資料表名稱
public class Opera
{
//在 EF Code First中,如果把屬性設為Id且型別設為int,會自動識別出這個欄位就是主索引鍵,
//但如果你想要把屬性名稱自行命名例如uid,就必須告宣告這個是主索引鍵。
[Key]
[DisplayName("編號")]
public int OperaId { get; set; }
[MaxLength(100)] //最大長度
[MinLength(1)] //最小長度
[Required(ErrorMessage = "歌劇名稱不可以為空白")] //宣告必填欄位(NOT NULL)
[DisplayName("歌劇名稱")] //顯示欄位的名稱
public string Title { get; set; }
[EmailAddress] //驗證mail格式
[DisplayName("Mail")]
public string Email { get; set; }
[Url] //網址格式驗證
public string BlogUrl { get; set; }
[DisplayName( "年代" )]
[Range(1600, 2100, ErrorMessage = "範圍值為1600 ~ 2100")]
public int Year { get; set; }
[Required]
[DisplayName("作者")]
public string Composer { get; set; }
}
2014年4月24日 星期四
[C#] 預防SQL隱碼攻擊函式
form: http://www.dotblogs.com.tw/shinyo.her/archive/2010/08/20/17326.aspx
預防SQL隱碼攻擊函式
// CheckSQL() 檢查字串中有 SQL 隱碼攻擊的字串 「'」「;」「--」「|」「\t」「\n」
public bool CheckSQL(string sSQL)
{
bool bSafe = false;
if (sSQL == null)
bSafe = true;
else
{
bSafe = ( (sSQL.IndexOf("'") >= 1 )
|| (sSQL.IndexOf(" ") >= 1 )
|| (sSQL.IndexOf(";") >= 1 )
|| (sSQL.IndexOf("--") >= 1 )
|| (sSQL.IndexOf("|") >= 1 )
|| (sSQL.IndexOf("\t") >= 1 )
|| (sSQL.IndexOf("\n") >= 1 )
|| (sSQL.ToUpper().IndexOf("SELECT") >= 1 )
|| (sSQL.ToUpper().IndexOf("UPDATE") >= 1 )
|| (sSQL.ToUpper().IndexOf("DELETE") >= 1 )
|| (sSQL.ToUpper().IndexOf("CREATE") >= 1 )
);
}
return bSafe;
}
2014年4月20日 星期日
javascript - 解除封鎖右鍵
Author: Mango
|
at:凌晨12:52
|
Category :
javascript
|
(function() {
var doc = document;
var body = doc.body;
var html = doc.documentElement;
html.onselectstart = html.oncopy = html.oncut = html.onpaste = html.onkeydown = html.oncontextmenu = html.onmousemove = body.oncopy = body.oncut = body.onpaste = body.onkeydown = body.oncontextmenu = body.onmousemove = body.onselectstart = body.ondragstart = doc.onselectstart = doc.oncopy = doc.oncut = doc.onpaste = doc.onkeydown = doc.oncontextmenu = doc.onmousedown = doc.onmouseup = null;
body.style.webkitUserSelect = 'auto';
function defaultHandler(event) {
event.returnValue = true;
}
for (event_type in ['selectstart', 'copy', 'cut', 'paste', 'keydown', 'contextmenu', 'dragstart']) {
html.addEventListener(event_type, defaultHandler);
body.addEventListener(event_type, defaultHandler);
doc.addEventListener(event_type, defaultHandler);
}
var jQuery = window.jQuery;
if (jQuery) {
jQuery(doc).unbind();
jQuery(body).unbind();
}
var $Fn = window.$Fn;
if ($Fn) {
try {
$Fn.freeElement(doc);
$Fn.freeElement(body);
} catch (e) {}
}
var jindo = window.jindo;
if (jindo) {
jindo.$A = null;
}
})();
---------------------------------------------------------
減肥版
(function() {var doc = document;var body = doc.body;var html = doc.documentElement;html.onselectstart = html.oncopy = html.oncut = html.onpaste = html.onkeydown = html.oncontextmenu = html.onmousemove = body.oncopy = body.oncut = body.onpaste = body.onkeydown = body.oncontextmenu = body.onmousemove = body.onselectstart = body.ondragstart = doc.onselectstart = doc.oncopy = doc.oncut = doc.onpaste = doc.onkeydown = doc.oncontextmenu = doc.onmousedown = doc.onmouseup = null;body.style.webkitUserSelect = 'auto';function defaultHandler(event) { event.returnValue = true;}for (event_type in ['selectstart', 'copy', 'cut', 'paste', 'keydown', 'contextmenu', 'dragstart']) { html.addEventListener(event_type, defaultHandler); body.addEventListener(event_type, defaultHandler); doc.addEventListener(event_type, defaultHandler);}var jQuery = window.jQuery;if (jQuery) { jQuery(doc).unbind(); jQuery(body).unbind();}var $Fn = window.$Fn;if ($Fn) { try { $Fn.freeElement(doc); $Fn.freeElement(body); } catch (e) {}}var jindo = window.jindo;if (jindo) {jindo.$A = null;}})();
var doc = document;
var body = doc.body;
var html = doc.documentElement;
html.onselectstart = html.oncopy = html.oncut = html.onpaste = html.onkeydown = html.oncontextmenu = html.onmousemove = body.oncopy = body.oncut = body.onpaste = body.onkeydown = body.oncontextmenu = body.onmousemove = body.onselectstart = body.ondragstart = doc.onselectstart = doc.oncopy = doc.oncut = doc.onpaste = doc.onkeydown = doc.oncontextmenu = doc.onmousedown = doc.onmouseup = null;
body.style.webkitUserSelect = 'auto';
function defaultHandler(event) {
event.returnValue = true;
}
for (event_type in ['selectstart', 'copy', 'cut', 'paste', 'keydown', 'contextmenu', 'dragstart']) {
html.addEventListener(event_type, defaultHandler);
body.addEventListener(event_type, defaultHandler);
doc.addEventListener(event_type, defaultHandler);
}
var jQuery = window.jQuery;
if (jQuery) {
jQuery(doc).unbind();
jQuery(body).unbind();
}
var $Fn = window.$Fn;
if ($Fn) {
try {
$Fn.freeElement(doc);
$Fn.freeElement(body);
} catch (e) {}
}
var jindo = window.jindo;
if (jindo) {
jindo.$A = null;
}
})();
---------------------------------------------------------
減肥版
(function() {var doc = document;var body = doc.body;var html = doc.documentElement;html.onselectstart = html.oncopy = html.oncut = html.onpaste = html.onkeydown = html.oncontextmenu = html.onmousemove = body.oncopy = body.oncut = body.onpaste = body.onkeydown = body.oncontextmenu = body.onmousemove = body.onselectstart = body.ondragstart = doc.onselectstart = doc.oncopy = doc.oncut = doc.onpaste = doc.onkeydown = doc.oncontextmenu = doc.onmousedown = doc.onmouseup = null;body.style.webkitUserSelect = 'auto';function defaultHandler(event) { event.returnValue = true;}for (event_type in ['selectstart', 'copy', 'cut', 'paste', 'keydown', 'contextmenu', 'dragstart']) { html.addEventListener(event_type, defaultHandler); body.addEventListener(event_type, defaultHandler); doc.addEventListener(event_type, defaultHandler);}var jQuery = window.jQuery;if (jQuery) { jQuery(doc).unbind(); jQuery(body).unbind();}var $Fn = window.$Fn;if ($Fn) { try { $Fn.freeElement(doc); $Fn.freeElement(body); } catch (e) {}}var jindo = window.jindo;if (jindo) {jindo.$A = null;}})();
2014年4月8日 星期二
[CSS] 讓pre標籤內的程式碼自動換行
Author: Mango
|
at:凌晨12:24
|
Category :
CSS
|
FORM:http://www.jb51.net/web/16815.html
文字換行
word-break:break-all
限制寬度
max-width: 250px;
特殊標籤<pre> 換行方式
pre {
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
2014年3月31日 星期一
[T-SQL] WITH (NOLOCK): 提升查詢效率和避免LOCK發生
Author: Mango
|
at:下午5:57
|
Category :
SQL
|
加了WITH (NOLOCK)即告訴SQL Server,我們的這段SELECT指令
無需去考慮目前table的transaction lock狀態,因此效能上會有明顯的提升,
而且資料庫系統的Lock現象會有明顯的減少(包含Dead Lock)。
有一點要特別注意,因為WITH (NOLOCK)不考慮目前table的transaction lock,
因此當有某些資料正處於多個phase交易(例如跨多個table的transaction交易-->如提款系統),
WITH (NOLOCK)會讓目前處理交易process的資料被乎略…
講白話一點,也就是說當使用NoLock時,它允許閱讀那些已經修改但是還沒有交易完成的資料。
因此如果有需要考量transaction交易資料的即時完整性時,使用WITH (NOLOCK)就要好好考慮一下。
如果不需考量transaction,WITH (NOLOCK)或許是個好用的參考
訂閱:
文章 (Atom)

