Thursday, December 17, 2015
Example:
<system.web>
<sessionState timeout="60"></sessionState>
</system.web>
if not working, try this:
1, go to IIS
2, Application Pools --> Advanced Setting
--> change Time in Idle Time-out
--> Done!
Friday, November 20, 2015
Mozilla has one shareholder: you. As a non-profit, we can do more to protect the Web with your donations. If everyone reading this chipped in $3, we would be supported for another year. Donate now.
Labels: Learn English
Wednesday, November 18, 2015
Ông Ito Junichi cho biết: “Khi tôi mới đến VN 20 năm trước, tôi thấy người VN cũng rất chăm chỉ như người Nhật”.
Thế nhưng
chỉ sau đó ít năm: “Nhưng giờ thì tôi không còn cảm thấy điều đó nữa.
Giờ tôi thấy người VN thích kiếm tiền nhưng không còn chăm chỉ như 20
năm trước nữa.”
Khác với nước Nhật: “Ở Tokyo, trường đại học nổi tiếng nhất là Đại học Tokyo. Nhưng các sinh viên ở trường này nếu có đến làm cho công ty tàu hỏa của thành phố thì việc đầu tiên họ phải làm là dọn dẹp nhà vệ sinh, cắt vé. Họ phải học lao động bằng chân tay. Họ phải trải qua mọi việc từ dưới lên trên trước khi muốn trở thành sếp. Theo tôi, việc người trẻ không tôn trọng những người lao động chân tay là khuyết điểm rất lớn của xã hội”.
Trong khi đó, ở Việt Nam người trẻ lại coi thường lao động chân tay, nhiều công ty Nhật muốn nhân viên ra xí nghiệp chỉ dẫn cho công nhân nhưng nhân viên trẻ VN không muốn làm việc đó. Còn người Nhật thì họ trân trọng những người làm ra cái thìa, cái kính bởi họ có kĩ năng.
Ở Việt Nam, giờ có nhiều người tốt nghiệp đại học, nhiều người có bằng MBA nhưng họ chưa đụng tay làm những việc thật bao giờ cả. Họ chưa bao giờ làm những công việc tay chân lấm láp. Những người trẻ đó chỉ học trên giấy tờ, đọc sách nhưng họ chẳng hiểu gì thực tế cả.
Ông CEO này kể lại: “Tôi có họp với những người làm việc trong các lĩnh vực như chứng khoán, ngân hàng… để bàn về đầu tư một nhà máy, những người này cần tiền để làm nhà máy nhưng họ không hiểu gì về nguyên liệu thô, quy trình sản xuất hay thị trường… Tôi hỏi thì họ bảo “sếp tôi bảo phải làm”. Những người như vậy, họ chỉ hiểu được phần ngọn, phần bề mặt mà không hiểu hết mọi thứ…”
Để thấy rằng người Việt Nam chỉ thích lao động bàn giấy mà không gắn với thực tiễn, chỉ thích bề nổi mà không thấy cái bề sâu.
Thiết nghĩ giáo dục Việt Nam nên tạo điều kiện cho những người giỏi kĩ năng. Thay vì tạo điều kiện cho những người chỉ giỏi làm bài kiểm tra mà bỏ quên những người không giỏi làm bài kiểm tra nhưng có kĩ năng.
Labels: learn
Wednesday, November 11, 2015
Công cụ được sử dụng
- FeedBurner : http://feedburner.google.com Dịch vụ này rất hữu ích, có thể trích xuất RSS để lấy Full content
- Ezinarticle : EzineArticles RSS Nguồn dữ liệu, site này được xem là Article directory uy tín nhất hiện nay, các bài viết được duyệt thủ công với thời gian đến 7 ngày và nội dung unique, không lỗi chính tả,ngữ pháp và nội dung thật sự có giá trị mới được approved, do đó, nguồn content này chất lượng tuyệt hảo .
- Blogspot : www.Blogger.com Dịch vụ blog miễn phí, hoặc wordpress.com Nên chọn Blogger vì có sẵn giao diện theo chủ đề Niche .
- Software easyautoblogged : Phần mềm autoblog bán tự động [ Download ]
- Không giới hạn số lượng autoblog và nguồn cấp dữ liệu, có thể tạo 100 autoblog
- Tự động Update hàng loạt feed và post lên các blog, chương trình tự động download các content mới và không post các bài đã có trong dữ liệu .
B1 : Chọn lĩnh vực : Chọn lĩnh vực chung chung hoặc Niche. VD: Lĩnh vực kinh doanh có các Niche như : kinh doanh dịch vụ, kinh doanh online , kinh doanh nông nghiệp , …. Truy cập http://ezinearticles.com/rss Nghiên cứu các cụm từ khóa để đặt tiêu đề, mô tả cho Niche site .
B2 : tạo blog miễn phí trên blogger.com, như bài viết trước đã gợi ý, nên đóng gói 1 giao diện blogspot để dùng cho nhiều blog một cách nhanh chóng, edit giao diện theo chủ đề, seo onpage thuận tiện .
B3: Nhập blog + feed vào chương trình . Thiên hạ đồn rằng autoblog có ưu thế ở số lượng, điều này đúng, với 1 blog có thể tạo nhiều nguồn nội dung. Trung bình 1 ngày site ezinarticle có 1 bài mới cho 1 Niche, hiện có hàng trăm Niche trên http://ezinearticles.com/rss và chưa kể có hàng nghìn site cung cấp nội dung khác. Do đó, 1 ngày giả sử có 3 bài mới => 1 tháng có 90 bài mới .
Không cần update autoblog thường xuyên, có thể 1 tháng mới cập nhật 1 lần do các Niche site auto này không phải thể loại tin tức . Cần publish dần ở chế độ ” lên lịch ” để các bot không nhận ra đây lầ autoblog , nếu publish cùng lúc quá nhiều nội dung thì rõ ràng site phát triển bất thường . Về mặt SEO thì mục tiêu đạt Pagerank 1 cần có:
- 3 Backlink PR 2
- 15 Backlink PR 1
Sunday, November 8, 2015
private string ReplaceElements(string html) { string patten = @"<\s*div[^>]*>(.*?)<\s*/div\s*>"; string wrapper = @"{0}"; MatchCollection collection = Regex.Matches(html, patten); foreach (Match match in collection) { string value = match.Value; int marker = value.IndexOf(">"); string innterHtml = value.Substring(marker + 1, value.Length - (marker + 7)); if (Regex.Match(innterHtml, patten).Success) innterHtml = this.ReplaceElements(innterHtml); string wrappedText = string.Format(wrapper, innterHtml); string modifiedValue = value.Replace(innterHtml, wrappedText); html = html.Replace(value, modifiedValue); } return html; }
use:
html = this.ReplaceElements(html);
------------------------------------
Extract all text contents from webpage
Friday, November 6, 2015
Dưới dây là cập nhật thống kê các công cụ hỗ trợ SEO cần thiết.
1) Công Cụ Hỗ Trợ Từ Google
♛ Google Webmastertool :https://www.google.com/webmasters/tools/home
♛ Google Analytic: https://www.google.com/analytics/web/
♛ Google Submit:https://www.google.com/webmasters/tools/submit-url
♛ Google Report:
♛ Google News: https://partnerdash.google.com/partnerdash/d/news#p:id=pfehome&a=100095465
♛ Google Thông báo: https://www.google.com/alerts
♛ Yêu cầu xem xét lại website: https://www.google.com/webmasters/tools/reconsideration?hl=vi&pli=1
♛ Từ chối liên kết,diallow : https://www.google.com/webmasters/tools/disavow-links-main?hl=vi
♛ Báo cáo Spam Rich Snippet : https://support.google.com/webmasters/contact/rich_snippets_spam?hl=en
♛ Google Forum Help : https://productforums.google.com/forum/#!forum/webmasters
♛ Báo cáo vi phạm DMCA :https://www.google.com/webmasters/tools/dmca-notice?hl=vi
♛ Báo Cáo Spam,Độc hại :https://www.google.com/webmasters/tools/spamreport?hl=vi
♛ Trợ giúp Rich Snippet:https://www.google.com/webmasters/markup-helper/u/0/?hl=vi
2) Kiểm Tra TF CF :
♛ https://majestic.com/reports/site-explorer
3) Công cụ kiểm tra thống kê tổng hợp
♛ http://smallseotools.com/
♛ http://moz.com/tools
4) Check Giá Trị Website :
♛ http://www.freewebsitereport.org/
5) Tuổi đời domain :
♛ http://web.archive.org/web/*/http://yourcutedog.com
6) Kiểm tra Backlink :
♛ https://ahrefs.com/
♛ http://www.openlinkprofiler.org/tools
♛ http://webmeup.com/
♛ https://majestic.com/reports/site-explorer?q=http%3A%2F%2F68xyx.com%2F&oq=http%3A%2F%2F68xyx.com%2F&IndexDataSource=F
7) Kiểm tra vị trí từ khóa
♛ http://myseotool.com/
♛ Phần mềm : Cute rank ...
8) Kiểm tra Spam Link:
♛ https://moz.com/researchtools/ose/
9)Đo tốc độ website:
♛ http://gtmetrix.com/
10) Addon Seo Quake của chrome và firefox:
♛ Chrome : Download here
♛ Firefox : Download Here
10 ) Addon Check Domain Authority - Page Authority
♛ Toolbar by moz :https://addons.mozilla.org/vi/firefox/addon/seo-toolbar-by-seomoz/
Sunday, November 1, 2015
#frameWrap {
position:relative;
height: 360px;
width: 640px;
border: 1px solid #777777;
background:#f0f0f0;
box-shadow:0px 0px 10px #777777;
}
#iframe1 {
height: 360px;
width: 640px;
margin:0;
padding:0;
border:0;
}
#loader1 {
position:absolute;
left:40%;
top:35%;
border-radius:20px;
padding:25px;
border:1px solid #777777;
background:#ffffff;
box-shadow:0px 0px 10px #777777;
}
Javascript
$(document).ready(function () {
$('#iframe1').on('load', function () {
$('#loader1').hide();
});
});
Monday, October 26, 2015
Links:
http://www.seguetech.com/blog/2013/07/01/how-to-add-Google-Mapping-android-application
Sunday, October 25, 2015
Bài tập thở "để đời" giúp sống thọ và sống khỏe ai cũng nên biết
0 comments Posted by Duc Nguyen at 12:18 AMĐây là bài tập thở giúp bác sĩ Nguyễn Khắc Viện sống thêm được 50 năm trong khi đã bị cắt gần hết phổi vì căn bệnh lao phổi.
Thursday, October 22, 2015
Khi bạn mua một hàng hóa hay dịch vụ nào đó trên mạng sử dụng công cụ
thanh toán paypal như mua hosting, domain. Thường thì các nhà cung cấp
dịch vụ hay hàng hóa đó đã liên kết với paypal để tự động gia hạn các
dịch vụ khi hết hạn. Tính năng này rất là hữu dụng, nó sẽ giúp bạn tránh
bị mất dịch vụ khi mà bạn quên không thanh toán khi đến hạn, paypal sẽ
tự động từ một khoản tiền có sẵn trong tài khoản để gia hạn dịch vụ đó
(trừ trường hợp tài khoản bạn không có tiền). Tuy nhiên sẽ rất là nguy
hiểm nếu như dịch vụ đó bạn không còn sử dụng nữa, việc đòi lại tiền là
rất khó. Trong bài viết này mình sẽ hướng dẫn cách tắt tính năng thanh
toán tự động trong paypal, trong một số trường hợp các nhà cung cấp dịch
vụ cũng cho phép bạn hủy tự động thanh toán trên trang chủ của họ.
Việc đầu tiền là bạn đăng nhập vào tài khoản của bạn trên paypal.com, chọn My Account > Profile > My money > chọn update trong mục My preapproved payments
Bạn sẽ thấy các trạng thái Status như:
Active: tính năng tự động thanh toán đang hoạt động.
Inactive: tính năng tự động thanh toán không hoạt động.
Canceled: tính năng tự động thanh toán đã bị hủy bỏ.
Để thay đối bạn chỉ cần click vào đường link trong cột Merchant, tiếp theo click vào Cancel, một hộp hôi thoại xác nhận hiện ra bạn chọn Yes để hoàn tất.
Chúc các bạn thành công.
Có nhiều các file .ocx khác nhau, sau đây mình hướng dẫn các bạn cài đặt một số file mà mình đã gặp:
regsvr32 /i Comdlg32.ocx
=======================
Cập nhật:
Tải file và làm theo hướng dẫn:
https://www.dropbox.com/s/cgy5244cienqshz/Dang%20ky%20OCX%20MSCOMCTL.rar?dl=0
Wednesday, October 21, 2015
Labels: Android
Tuesday, October 20, 2015
Node.js
- http://flippinawesome.org/2013/09/23/easy-api-scaffolding-with-simple-api-and-node-js/
- http://blog.modulus.io/nodejs-and-express-create-rest-api (May 2013)
- http://synthmedia.co.uk/blog/basic-nodejs-api-with-restify-and-save (May 2013)
- http://webapplog.com/tutorial-node-js-and-mongodb-json-rest-api-server-with-mongoskin-and-express-js/ (Jul 2013)
- http://thewayofcode.wordpress.com/2013/04/21/how-to-build-and-test-rest-api-with-nodejs-express-mocha/ (Apr 2013)
- http://webapplog.com/intro-to-express-js-simple-rest-api-app-with-monk-and-mongodb/ (Apr 2013)
- http://stackoverflow.com/questions/14990544/how-to-best-create-a-restful-api-in-node-js (Feb 2013)
- http://erichonorez.wordpress.com/2013/02/10/how-create-a-rest-api-with-node-js-and-express/ (Feb 2013)
- http://benaugarten.com/blog/2013/01/31/restful-a-better-rest-api-using-node-dot-js-with-express/ (Jan 2013)
- http://coenraets.org/blog/2012/10/creating-a-rest-api-using-node-js-express-and-mongodb/ (Nov 2012)
- http://pixelhandler.com/blog/2012/02/09/develop-a-restful-api-using-node-js-with-express-and-mongoose/ (Feb 2012)
PHP
- http://coreymaynard.com/blog/creating-a-restful-api-with-php/ (May 2013)
- http://net.tutsplus.com/tutorials/php/creating-an-api-centric-web-application/ (2011)
- http://www.youtube.com/watch?v=vJVQi7ZFSaQ (2010)
- http://www.particletree.com/features/how-to-add-an-api-to-your-web-service/ (2009)
- http://www.recessframework.org/page/towards-restful-php-5-basic-tips (2008)
- http://www.codewalkers.com/c/a/Miscellaneous/Create-Your-Own-Custom-API/ (2005)
Python
- http://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask (May 2013)
- http://gotofritz.net/blog/weekly-challenge/restful-python-api-bottle/ (2012)
- http://myadventuresincoding.wordpress.com/2011/01/02/creating-a-rest-api-in-python-using-bottle-and-mongodb/ (2011)
- http://www.robertshady.com/content/creating-very-basic-api-using-python-django-and-piston (2010)
Rails
- http://apionrails.icalialabs.com (2014)
- http://collectiveidea.com/blog/archives/2013/06/13/building-awesome-rails-apis-part-1/ (Jun 2013)
- http://www.emilsoman.com/blog/2013/05/18/building-a-tested/ (May 2013)
- http://railsware.com/blog/2013/04/08/api-with-ruby-on-rails-useful-tricks/ (Apr 2013)
- http://mt.gomiso.com/2011/06/27/building-a-platform-api-on-rails/ (2011)
- http://www.whatcodecraves.com/articles/2008/11/25/how-to-make-an-api-for-a-rails-app (2008)
- http://www.xml.com/pub/a/2006/04/19/rest-on-rails.html?page=3 (2006)
ASP.NET Web API (C#/.NET)
- http://www.windowsazure.com/en-us/develop/net/tutorials/rest-service-using-web-api/ (Jun 2013)
- http://blog.ploeh.dk/2013/08/23/how-to-create-a-pure-f-aspnet-web-api-project/ (Aug 2013)
- http://dotnet.dzone.com/articles/web-api-aspnet-web-forms (May 2013)
- http://www.contentedcoder.com/2013/03/creating-your-first-web-api.html (Apr 2013)
- http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api (2012)
- http://www.asp.net/web-api/overview/creating-web-apis/creating-a-web-api-that-supports-crud-operations (2012)
- http://www.asp.net/web-api/overview/creating-web-apis/using-web-api-with-entity-framework/using-web-api-with-entity-framework,-part-1 (2012)
- https://github.com/Factual/factual-csharp-driver/wiki/ASP.NET-Web-API-with-Factual-Driver-Example (2012)
Java
- http://www.ibm.com/developerworks/training/kp/j-kp-rest/
- http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch18s02.html
- http://docs.oracle.com/javaee/6/tutorial/doc/giepu.html
- http://www.myeclipseide.com/documentation/quickstarts/webservices_rest/
- http://rest.elkstein.org/2008/02/using-rest-in-java.html
Monday, October 19, 2015
Android Login Registration Screen with SQLite Database Example
0 comments Posted by Duc Nguyen at 1:39 AMSteps Required to Create Android Login Registration Application
Android Layouts for Login Registration Application
See more...
and more this for other example
// Dialog windowContext context = this; AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("www.google.com"); builder.setMessage("Are you sure?"); // Add action buttonsbuilder.setPositiveButton("Sign In", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { //Log.d("","You clicked Sing In button."); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // Log.d("","You clicked Cancel button."); } }); builder.create().show();
Labels: Android
Sunday, October 18, 2015
Ví dụ chữ (tôi là "Obama" của Việt Nam)
Code C# viết là: string str = "Tôi là \"Obama\" của Việt Nam";
Dự án Android của bạn bây giờ là một ứng dụng “Hello World” cơ bản có chứa một số tập tin mặc định. Dành ít phút để xem lại quan trọng nhất trong số này:
app/src/main/res/layout/activity_my.xml
- Đây là file layout XML cho các hoạt động mà bạn thêm vào khi bạn tạo ra dự án với Android Studio. Sau khi tạo dự án mới, Android Studio trình bày tập tin này với cả cách nhìn văn bản và một bản xem trước của màn hình giao diện người dùng. Các tập tin bao gồm một số các thiết lập mặc định và một yếu tố TextView hiển thị thông báo, “Hello World!”
app/src/main/java/com.mycompany.myfirstapp/MyActivity.java
- Một tab cho tập tin này xuất hiện trong Android Studio khi quy trình tạo dự án mới hoàn thành. Khi bạn chọn tập tin để xem mã lệnh của class cho hoạt động (activity) mà bạn tạo ra. Khi bạn xây dựng và chạy các ứng dụng, các lớp hoạt động (activity) bắt đầu hoạt động và nạp file layout xuất ra “Hello World!”
app/src/main/AndroidManifest.xml
- Tập tin manifest mô tả các đặc điểm cơ bản của ứng dụng và xác định từng thành phần của nó. Bạn sẽ tìm hiểu rõ hơn tập tin này và thêm các thành phần khác cho ứng dụng của bạn trong các bài học sau.
app/build.gradle
- Android Studio sử dụng Gradle để biên dịch và xây dựng các ứng dụng của bạn. Có một tập tin build.gradle cho từng module của dự án của bạn, cũng như một tập tin build.gradle cho toàn bộ dự án. Thông thường, bạn chỉ quan tâm đến tập tin thebuild.gradle cho các module, trong trường hợp các ứng dụng hoặc module ứng dụng. Đây là nơi mà ứng dụng của bạn xây dựng phụ thuộc được thiết lập, bao gồm các thiết lập defaultConfig:
compiledSdkVersion
is the platform version against which you will compile your app. By default, this is set to the latest version of Android available in your SDK. (It should be Android 4.1 or greater; if you don’t have such a version available, you must install one using the SDK Manager.) You can still build your app to support older versions, but setting this to the latest version allows you to enable new features and optimize your app for a great user experience on the latest devices.applicationId
is the fully qualified package name for your application that you specified during the New Project workflow.minSdkVersion
is the Minimum SDK version you specified during the New Project workflow. This is the earliest version of the Android SDK that your app supports.targetSdkVersion
indicates the highest version of Android with which you have tested your application. As new versions of Android become available, you should test your app on the new version and update this value to match the latest API level and thereby take advantage of new platform features. For more information, read Supporting Different Platform Versions.
Cũng lưu ý các thư mục con trong /res có chứa các tài nguyên cho ứng dụng của bạn:
drawable
/ - Thư mục cho các đối tượng có thể vẽ (chẳng hạn như bitmap) được thiết kế cho các độ phân giải màn hình khác nhau, chẳng hạn như độ phân giải trung bình (mdpi) và mật độ cao (hdpi). Thư mục drawable khác chứa tài nguyên được thiết kế cho mật độ màn hình khác. Ở đây bạn sẽ tìm thấy ic_launcher.png xuất hiện khi bạn chạy các ứng dụng mặc định.
layout/
- Thư mục cho các tập tin xác định giao diện ứng dụng của bạn sử dụng như activity_my.xml, thảo luận ở trên, trong đó mô tả một cách bố trí cơ bản cho lớp MyActivity.
menu/
- Thư mục cho các tập tin định nghĩa các thành phần trong trình đơn của bạn.
values/
- Thư mục cho các tập tin XML khác có chứa một tập hợp các tài nguyên, chẳng hạn như các định nghĩa chuỗi và màu sắc. Tập tin strings.xml định nghĩa “Hello World!” chuỗi hiển thị khi bạn chạy các ứng dụng mặc định.
Saturday, October 17, 2015
http://android.vn/threads/web-services-with-ksoap.77291/
https://duythanhcse.wordpress.com/2014/02/25/bai-46-su-dung-net-webservice-trong-android/
Labels: Android
Thursday, October 8, 2015
1
2
3
| Select TL.EntryDate, TL.Hours, J.JobName From TimeSheetLines TL Left Join Jobs J on TL.JobNo=J.JobNo |
1
2
3
4
5
6
7
8
9
10
11
| var lines = from tl in db.TimeSheetLines join j in db.Jobs on tl.JobNo equals j.JobNo where tl.ResourceNo == resourceNo select new { EntryDate = tl.EntryDate, Hours = tl.Hours, Job = j.JobName }; |
1
2
3
4
5
6
7
8
9
10
11
12
| var lines = from tl in db.TimeSheetLines join j in db.Jobs on tl.JobNo equals j.JobNo into tl_j where tl.ResourceNo == resourceNo from j in tl_j.DefaultIfEmpty() select new { EntryDate = tl.EntryDate, Hours = tl.Hours, Job = j.JobName }; |
into
” with the join statement followed by reselecting the result using “DefaultIfEmpty
()” expression. And here’s the generated SQL for the above LINQ expression.
1
2
3
4
| SELECT [t0].[EntryDate] as [EntryDate], [t0].[Hours] as [Hours], [t1].[JobName] AS [Job] FROM [dbo].[TimeSheetLine] AS [t0] LEFT OUTER JOIN [dbo].[Jobs] AS [t1] ON [t0].[JobNo] = [t1].[JobNo] WHERE [t0].[ResourceNo] = @p0 |
1
2
3
4
5
6
7
8
9
| var lines = from tl in db.TimeSheetLines from j in db.Jobs.Where(j=>j.JobNo == tl.JobNo).DefaultIfEmpty() select new { EntryDate = tl.EntryDate, Hours = tl.Hours, Job = j.JobName }; |
1
2
3
4
| Select TL.EntryDate, TL.Hours, J.JobName, I.IndirectName From TimeSheetLines TL Left Join Jobs J on TL.JobNo=J.JobNo Left Join Indirects I on TL.IndirectCode=I.IndirectCode |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| var lines = from tl in db.TimeSheetLines join j in db.Jobs on tl.JobNo equals j.JobNo into tl_j join i in db.Indirects on tl.IndirectCode equals i.IndirectCode into tl_i where tl.ResourceNo == resourceNo from j in tl_j.DefaultIfEmpty() from i in tl_i.DefaultIfEmpty() select new { EntryDate = tl.EntryDate, Hours = tl.Hours, Job = j.JobName, Indirect = i.IndirectName, }; |
1
2
3
4
| SELECT [t0].[EntryDate] as [EntryDate], [t0].[Hours] as [Hours], [t1].[JobName] AS [Job], [t2].[IndirectName] As [Indirect] LEFT OUTER JOIN [dbo].[Jobs] AS [t1] ON [t0].[JobNo] = [t1].[JobNo] LEFT OUTER JOIN [dbo].[Indirects] AS [t2] ON [t0].[IndirectCode] = [t2].[IndirectCode] WHERE [t0].[ResourceNo] = @p0 |
Notice that this post describes the approach to perform a Left Outer Join in LINQ To SQL as well as Entity Framework (version 4). The same is not true for Entity Framework version 3.5 since it does not support the
DefaultIfEmpty
keyword. To perform Left Outer Joins with Entity Framework 3.5, we need to create appropriate relationships (e.g 0..1 to 0..Many) in our Entity Model and they will be automatically translated into TSQL’s Left Join clause.