اس کیوال سرور
امنیت
توسعه وب
دات نت فریم ورک
دبلیو پی اف و سیلور لایت
دلفی
سی و مشتقات
لینوکس
متفرقه
محیطهای مجتمع توسعه
ویندوز
DBEntities MyDB = new DBEntities(); var Query1 = from P in MyDB.Per where P.IDRANK == 2 select P;
string strquery = "where P.IDRANK == 2"; DBEntities MyDB = new DBEntities(); var Query1 = from P in MyDB.Per strquery select P;
using System.Management; using System.Windows.Forms; namespace HardwareSerialNumber { class Program { static void Main() { string serialNumber = string.Empty; ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor"); foreach (var o in searcher.Get()) { var query = (ManagementObject)o; serialNumber = serialNumber + query["ProcessorId"]; } MessageBox.Show(string.Format("Processor Serial Number :{0}", serialNumber),"Serial Number",MessageBoxButtons.OK,MessageBoxIcon.Exclamation); } } }
در این آدرس یک کتابخانه که شامل تمامی مثالها میباشد قابل در یافت است.
در خیلی مواقع ملاحظه میشود که برای نمایش تعدادی از رکوردهای یک جدول در پایگاه داده، کل مقادیر موجود درآن توسط یک دستور select به دست میآید و صفحهبندی خروجی، به کنترلهای موجود سپرده میشود. اگر پایگاه داده ما دارای تعداد زیادی رکورد باشد، آن موقع است که دچار مشکل میشویم. فرض کنید به طور همزمان ۵ نفر (که تعداد زیادی نیستند) از برنامه ما که شامل ۱۰۰۰۰۰ سطر داده میباشد استفاده کنند و در هر صفحه، ۱۰ رکورد نمایش داده شود و صفحهبندی ما از نوع معقولی نباشد. در این صورت به جای اینکه با ۵×۱۰ رکورد داده را بارگزاری کنیم، ۵×۱۰۰۰۰۰ رکورد یعنی ۵۰۰۰۰۰ رکورد را برای به دست آوردن ۵۰ رکورد بارگزاری میکنیم. در زیر روشی شرح داده میشود که توسط آن، این سربار اضافه از روی برنامه و سرورهای مربوطه حذف شود. به stored procedure و توضیحات مربوط به آن توجه فرمایید :
CREATE PROCEDURE sp_PagedItems ( @Page int, @RecsPerPage int ) AS -- We don't want to return the # of rows inserted -- into our temporary table, so turn NOCOUNT ON SET NOCOUNT ON --Create a temporary table CREATE TABLE #TempItems ( ID int IDENTITY, Name varchar(50), Price currency ) -- Insert the rows from tblItems into the temp. table INSERT INTO #TempItems (Name, Price) SELECT Name,Price FROM tblItem ORDER BY Price -- Find out the first and last record we want DECLARE @FirstRec int, @LastRec int SELECT @FirstRec = (@Page - 1) * @RecsPerPage SELECT @LastRec = (@Page * @RecsPerPage + 1) -- Now, return the set of paged records, plus, an indiciation of we -- have more records or not! SELECT *, MoreRecords = ( SELECT COUNT(*) FROM #TempItems TI WHERE TI.ID >= @LastRec ) FROM #TempItems WHERE ID > @FirstRec AND ID < @LastRec -- Turn NOCOUNT back OFF SET NOCOUNT OFF
در مرحله بعد شماره اولین و آخرین سطر مورد نظر را بر اساس پارامترهای ورودی محاسبه کرده و در متغیرهای @FirstRec و @LastRec میریزیم.
برای
استفاده از این کد فقط کافیست که پارامترهای ورودی را مقداردهی نمایید.
مثلا اگر میخواهید در یک کنترل Grid از آن استفاده کنید باید ابتدا یک
کوئری داشته باشید که تعداد کل سطرها را به شما بدهد و بر اساس این مقدار
تعداد صفحات مورد نظر را به دست آورید. پس از آن با کلیک روی هر کدام از
شماره صفحات آن را به عنوان مقدار به پارامتر مورد نظر بفرستید و از آن لذت
ببرید.
> create-react-app sample-03 > cd sample-03 > npm start
const colors = ["red", "green", "blue"];
const items = colors.map(function(color) { return "<li>" + color + "</li>"; }); console.log(items);
const items2 = colors.map(color => "<li>" + color + "</li>"); console.log(items2);
const items3 = colors.map(color => `<li>${color}</li>`); console.log(items3);
const address = { street: "street 1", city: "city 1", country: "country 1" };
const street1 = address.street; const city1 = address.city; const country1 = address.country;
const { street, city, country } = address;
const { street: st } = address; console.log(st);
const first = [1, 2, 3]; const second = [4, 5, 6];
const combined = first.concat(second); console.log(combined);
const combined2 = [...first, ...second]; console.log(combined2);
const combined2 = [...first, "a", ...second, "b"]; console.log(combined2);
const clone = [...first]; console.log(clone);
const firstObject = { name: "User 1" }; const secondObject = { job: "Job 1" }; const combinedObject = { ...firstObject, ...secondObject, location: "Here" }; console.log(combinedObject);
{name: "User 1", job: "Job 1", location: "Here"}
const clonedObject = { ...firstObject }; console.log(clonedObject);
const person = { name: "User 1", walk() { console.log("walk"); } }; const person2 = { name: "User 2", walk() { console.log("walk"); } };
class Person { constructor(name) { this.name = name; } walk() { console.log("walk"); } }
const person3 = new Person("User 3"); console.log(person3.name); person3.walk();
class Teacher { teach() { console.log("teach"); } }
class Teacher extends Person { teach() { console.log("teach"); } }
const teacher = new Teacher("User 4");
console.log(teacher.name); teacher.teach(); teacher.walk();
class Teacher extends Person { constructor(name, degree) {}
Uncaught ReferenceError: Must call super constructor in derived class before accessing 'this' or returning from derived constructor
class Teacher extends Person { constructor(name, degree) { super(name); this.degree = degree; } teach() { console.log("teach"); } }
const teacher = new Teacher("User 4", "MSc");
export class Teacher extends Person {
import { Person } from "./Person"; export class Teacher extends Person {
import { Person } from "./Person"; import { Teacher } from "./Teacher";
export default class Teacher extends Person {
import Teacher from "./Teacher";
import { Person } from "./Person"; export function testTeacher() { console.log("Test Teacher"); } export default class Teacher extends Person {
import Teacher, { testTeacher } from "./Teacher";
import React, { Component } from 'react';
با اجرای این کوئری خاص به همراه AsNoTrackingWithIdentityResolution خطای زیر مشاهده میشود و اصلا کار نمیکند (چون فیلد JSON هم دارد):
System.InvalidOperationException: Invalid token type: 'StartObject'.
در EF-Core و در طی طول عمر «یک» Context:
بنابراین وجود AsNoTrackingWithIdentityResolution فقط در طی طول عمر یک Conetxt و برای کاهش سربار نمونه سازی اشیاء مشابه با IDهای یکسان کوئریهای آن Context ارزشمند است و اگر Context شما از چندین کوئری مشابه تشکیل نمیشود، عملا کار بیشتری را انجام نمیدهد و تفاوتی با AsNoTracking ندارد.