نوشته شده توسط : محمد حسین فخرآوری
  در سی شارپ دو نوع class و struct وجود دارد که تقریباً مشابه یکدیگرند در حالیکه یکی از آنها-value type و دیگری reference-type است. 

struct چیست؟ 
structها مشابه classها هستند با این تفاوت که structها finalizer ندارند و از ارث بری پشتیبانی نمی‌کنند. structها کاملا مشابه classها تعریف می‌شوند و در تعریف آنها از کلمه کلیدی struct استفاده می‌شود. آنها شامل فیلدها، متدها، خصوصیت‌ها نیز می‌شوند. در زیر نحوه تعریف آن را مشاهده می‌کنید: 


 

struct Point
{
   private int x, y;             // private fields
  
   public Point (int x, int y)   // constructor
   {
         this.x = x;
         this.y = y;
   }
 
   public int X                  // property
   {
         get {return x;}
         set {x = value;}
   }
 
   public int Y
   {
         get {return y;}
         set {y = value;}
   }
}


:: موضوعات مرتبط: C#
:: برچسب‌ها: value type و reference type
تاريخ انتشار : چهارشنبه 1393/05/29 |
نوشته شده توسط : محمد حسین فخرآوری

 متد System.Math.Round که برای گرد کردن اعداد اعشاری به کار می‌رود، دارای 8 نوعoverload می‌باشد، که عدم توجه به موارد مربوط به آن باعث بروز خطا در محاسبات خواهد شد. به طور مثال پیش بینی شما از گرد کردن عدد 3.45 عدد 3.5 است ولی گاهی 3.5 و گاهی 3.4 گرد خواهد شد. 
پس بهتر است تا با نکات زیر به شکل دقیق آشنا باشید.
 

Round(Decimal)

Rounds a decimal value to the nearest integral value.

(ورودی: دسیمال) به نزدیکترین عدد کامل گرد میکند،  4.3 به 4 و 4.8 به 5 گرد می‌شود. ولی در صورتیکه فاصله تا عدد کامل قبل و بعد برابر باشد به نزدیکترین عدد زوج گرد میکند، 4.5 به 4 گرد می‌شود چرا که 5  عددی فرد است.
نکته 1: خروجی تابع از نوع دسیمال است نه عدد کامل.
نکته 2: این تابع بر طبق استاندارد IEEE Standard 754, section 4 پیاده سازی شده است که در اصطلاح rounding to nearest یا banker's roundingنیز گفته می‌شود. نتیجه برای به حداقل رساندن خطا است. نتیجه این حالت از متد با نتیجه Round(Decimal, MidpointRounding.ToEven) برابر است.



:: موضوعات مرتبط: C#
:: برچسب‌ها: نکات مربوط به گرد کردن اعداد در دات نت
تاريخ انتشار : چهارشنبه 1393/05/29 |
نوشته شده توسط : محمد حسین فخرآوری

  یکی از مواردی که در محیط کاری زیاد پیش می‌آید بحث همگام نبودن دیتابیس توسعه با دیتابیس کاری است.
منظور از دیتابیس توسعه، همان دیتابیسی است که برای برنامه نویسی و آزمایش از آن استفاده می‌شود و دیتابیس کاری هم مشخص است (برای مثال بر روی یک سرور در اینترانت داخلی یک شرکت و یا بر روی یک سرور اینترنتی قرار دارد). عادت‌های مختلفی هم این‌جا ممکن است وجود داشته باشد، برای مثال تغییرات جدید بر روی دیتابیس کاری اعمال شود و سپس فراموش شود که همان‌ها نیز باید به دیتابیس توسعه هم اعمال شوند تا در تغییرات بعدی برای آزمایش دچار مشکل نشویم و برعکس. بعد از یک مدت هم تبدیل به کابوس می‌شود؛ نمی‌دانیم الان دیتابیس کاری جدیدتر است یا دیتابیس توسعه؛ و یا اینکه کلا دو دیتابیس مفروض چه تفاوت‌های ساختاری با هم دارند (بدیهی است بحث دیتا در اینجا در درجه‌ی اول اهمیت قرار ندارد). فرصت این هم وجود ندارد که تک تک جداول، ویووها، رویه‌های ذخیره شده و خلاصه تمامی اشیاء مرتبط را بررسی کنیم که چه اختلافی با هم دارند. اینجا مستندات هم کمکی نخواهند کرد چون صحبت از یک جدول با 5 فیلد در میان نیست که موارد را سریع و به صورت دستی تطابق دهیم. همچنین این مشکل عموما زمانی رخ می‌دهد که یکی از دو طرف در حال حاضر مستندات کامل و به روزی ندارد. اکنون چه باید کرد؟
اولین فکری که به ذهن خطور می‌کند مراجعه به ابزارهای جانبی است (مثلا Red Gate's SQL Compare چند صد دلاری) غافل از اینکه خود Visual studio 2008 (نگارش‌های تیمی و دیتابیسی) این قابلیت را نیز ارائه می‌دهد (شکل زیر).
 



:: موضوعات مرتبط: C#، SQL Server
:: برچسب‌ها: مقایسه ساختاری دو دیتابیس SQL Server
تاريخ انتشار : یکشنبه 1393/05/26 |
نوشته شده توسط : محمد حسین فخرآوری

--Disable Constraints & Triggers
exec sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'
--Perform delete operation on all table for cleanup
exec sp_MSforeachtable 'DELETE ?'
--Enable Constraints & Triggers again
exec sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? ENABLE TRIGGER ALL'
--Reset Identity on tables with identity column
exec sp_MSforeachtable 'IF OBJECTPROPERTY(OBJECT_ID(''?''), ''TableHasIdentity'') = 1 BEGIN DBCC CHECKIDENT (''?'',RESEED,0) END'

اسکریپت فوق تمامی رکوردهای دیتابیس جاری را حذف کرده و همچنین فیلدهای identity را نیز مجددا به حالت اول باز می‌گرداند.

 



:: موضوعات مرتبط: SQL Server
:: برچسب‌ها: حذف سریع تمام رکوردها در SQL server
تاريخ انتشار : یکشنبه 1393/05/26 |
نوشته شده توسط : محمد حسین فخرآوری

SELECT O.Name,
col.name AS ColName,
systypes.name
FROM syscolumns col
INNER JOIN sysobjects O
ON col.id = O.id
INNER JOIN systypes
ON col.xtype = systypes.xtype
WHERE O.Type = 'U'
AND OBJECTPROPERTY(o.ID, N'IsMSShipped') = 0
AND systypes.name IN ('text', 'ntext', 'image')
ORDER BY
O.Name,
Col.Name

 



:: موضوعات مرتبط: SQL Server
:: برچسب‌ها: پیدا کردن یک فرمت فیلد خاص در کل دیتابیس
تاريخ انتشار : شنبه 1393/05/25 |
نوشته شده توسط : محمد حسین فخرآوری

در سی شارپ دو نوع class و struct وجود دارد که تقریباً مشابه یکدیگرند در حالیکه یکی از آنها-value type و دیگری reference-type است. 

struct چیست؟ 
structها مشابه classها هستند با این تفاوت که structها finalizer ندارند و از ارث بری پشتیبانی نمی‌کنند. structها کاملا مشابه classها تعریف می‌شوند و در تعریف آنها از کلمه کلیدی struct استفاده می‌شود. آنها شامل فیلدها، متدها، خصوصیت‌ها نیز می‌شوند. در زیر نحوه تعریف آن را مشاهده می‌کنید: 


 

struct Point

{

   private int x, y;             // private fields

  

   public Point (int x, int y)   // constructor

   {

         this.x = x;

         this.y = y;

   }

 

   public int X                  // property

   {

         get {return x;}

         set {x = value;}

   }

 

   public int Y

   {

         get {return y;}

         set {y = value;}

   }

}



:: موضوعات مرتبط: C#
:: برچسب‌ها: reference type, value type
تاريخ انتشار : جمعه 1393/05/24 |
نوشته شده توسط : محمد حسین فخرآوری
لینک مطلب :  Link



:: موضوعات مرتبط: Asp.Net، SQL Server
:: برچسب‌ها: طراحی جداول Tag, تگ, طراحی تگ
تاريخ انتشار : جمعه 1393/05/10 |
نوشته شده توسط : محمد حسین فخرآوری
آدم های راستگو خیلی زود و خیلی راحت عاشق میشن، خیلی راحت احساسشون رو بروز میدن، خیلی راحت بهت میگن که دوست دارم، خیلی دیر دل میکنن،خیلی دیر تنهات میزارن اما وقتی زخمی بشن، ساکت میشن ، چیزی نمیگن خیلی راحت میرن و دیگه هم بر نمیگردن.



:: موضوعات مرتبط: احساسات
تاريخ انتشار : دوشنبه 1393/04/30 |
نوشته شده توسط : محمد حسین فخرآوری
ISOLevelSQLServer00

در یکی از مقاله‌های سایت توضیحاتی در مورد تراکنش ها ارائه شده است. در این مقاله در مورد Isolation Levelهای تراکنش ها صحبت خواهیم کرد. در ابتدا تعریفی از Isolation Level را می آوریم.
 Isolation Levelها در SQL Server روش های قفل گذاری در میان چند تراکنش را مشخص می کند.

به بیان ساده تر اگر ما یک عمل به روز رسانی را داخل یک تراکنش انجام دهیم و از طرف دیگر با استفاده از دستور SELECT داده های مربوط به همان به روز رسانی را بخواهیم استخراج کنیم، اینجا Isolation Level نحوه دستیابی ما به اطلاعات را مشخص خواهد کرد. در ادامه این مقاله هر مورد از انواع Isolation Level همراه با یک مثال توضیح داده شده است.



:: موضوعات مرتبط: SQL Server
:: برچسب‌ها: آشنایی با Isolation Level
تاريخ انتشار : سه شنبه 1393/04/24 |
نوشته شده توسط : محمد حسین فخرآوری

DECLARE @a VARCHAR(50)=N'محمد;حسین;فخراوری;136  9'

WITH MyWords(ranking, word, string) AS(

    SELECT 1,

           CAST(SUBSTRING(@a, 1, CHARINDEX(';', @a) - 1) AS VARCHAR(25)),STUFF(@a, 1, CHARINDEX(';', @a), '')

    UNION ALL 

    SELECT ranking + 1,

           CAST(SUBSTRING(string, 1, CHARINDEX(';', string) - 1) AS VARCHAR(25)),

           STUFF(string, 1, CHARINDEX(';', string), '')FROM MyWords WHERE CHARINDEX(';', string) > 0

)

--SELECT ranking, word FROM MyWords;

SELECT TOP(1) STUFF((SELECT ' ' + word FROM MyWords FOR XML PATH('')), 1, 1, '')

FROM MyWords AS x

 



:: موضوعات مرتبط: SQL Server
:: برچسب‌ها: بدست آوردن رشته هایی که با dash از هم جدا شده اند, sql server
تاريخ انتشار : شنبه 1393/03/31 |
نوشته شده توسط : محمد حسین فخرآوری

نحوه مرتب سازی رشته تاریخ

ALTER FUNCTION [dbo].[GetOrder](@Text NVARCHAR(50))RETURNS nvarchar(50)

AS

begin

declare @Row int

 

SET @Row = case @Text when N'فروردین' then 1

                   when N'اردیبهشت' THEN 2

                   when N'خرداد' then 3

                   when N'تیر' then 4

                   when N'مرداد' then 5

                   when N'شهریور' then 6

                   when N'مهر' then 7

                   when N'آبان' then 8

                   when N'آذر' then 9

                   when N'دی' then 10

                   when N'بهمن' then 11

                   when N'اسفند' then 12

               ELSE 13 END 

RETURN @Row

end

 

 

 --SELECT [dbo].[GetOrder](N'اسفند')

SELECT * FROM(
SELECT  [ID],
[Date],RIGHT([Date],LEN([Date])-4)AS 'Month',LEFT([Date],4) AS 'Year',dbo.GetOrder(RIGHT([Date],LEN([Date])-5))AS 'Sort'
FROM [Table_1]
)AS U
ORDER BY U.Year,U.Sort

خروجی



:: موضوعات مرتبط: SQL Server
:: برچسب‌ها: مرتب سازی ستون
تاريخ انتشار : جمعه 1393/03/30 |
نوشته شده توسط : محمد حسین فخرآوری

نحوه عملکرد توابع Ranking :
این توابع مقادیر خود را بر اساس یک مرتب سازی تولید می کنند. به مثال زیر توجه نمایید:

1 SELECT ID, ROW_NUMBER() OVER (ORDER BY ID) AS RowNumber FROM SampleTable

همان گونه که مشاهده می کنید بعد از تابع ROW_NUMBER() عبارت OVER (ORDER BY ID) نوشته شده است که مشخص می کند این شماره ردیف بر اساس چه ترتیبی به سطرها اختصاص داده شود.

برای مثال های این مقاله از جدول شکل زیر استفاده خواهیم نمود.

01-SQLServerRanking

ادامه مطالب در ادامه مطلب

 

 



:: موضوعات مرتبط: SQL Server
تاريخ انتشار : یکشنبه 1393/03/04 |
نوشته شده توسط : محمد حسین فخرآوری

aad farsi
{Persian(Sum(DataB_Forums,B_Forums.ForumID).ToString())}

horof farsi
{ToWordsFa(long.Parse(Sum(DataB_Forums,B_Forums.ForumID).ToString()))}



:: موضوعات مرتبط: Stimulsoft Report
:: برچسب‌ها: نمایش اعداد به حروف در استیمول
تاريخ انتشار : جمعه 1392/12/02 |
نوشته شده توسط : محمد حسین فخرآوری
shadmehr متن آهنگ های آلبوم طرفدار از شادمهر
برای دیدن متن ترانه ها به ادامه مطلب مراجعه کنید



:: موضوعات مرتبط: متن ترانه
:: برچسب‌ها: آلبوم طرفدار از شادمهر
تاريخ انتشار : یکشنبه 1392/11/13 |
نوشته شده توسط : محمد حسین فخرآوری

نحوه ساخت منوی داینامیک

لینک مطلب



:: موضوعات مرتبط: Asp.Net
:: برچسب‌ها: نحوه ساخت منوی داینامیک
تاريخ انتشار : جمعه 1392/10/20 |
نوشته شده توسط : محمد حسین فخرآوری
 Label1.Text = TextBox2.Text.Replace("\n", "< BR/>");


:: موضوعات مرتبط: Asp.Net
:: برچسب‌ها: چند خطی در مولتی لاین
تاريخ انتشار : جمعه 1392/10/20 |
نوشته شده توسط : محمد حسین فخرآوری

ابتدا پوشه ckeditor را در root پروژه کپی کرده و بعد CKEditor.NET.dll را رفرنس

کنید یا در پوشه bin کپی کنید.

برای راحتی استفاده در صفحات در فایل web.config قسمت زیر اضافه کنید.

   

بعد برای استفاده در صفحات از کد زیر استفاده کنید

 

برای دانلود dll ها میتونید از سمپل من بردارید در ادرس


:: موضوعات مرتبط: Asp.Net
:: برچسب‌ها: CKEditor
تاريخ انتشار : چهارشنبه 1392/10/18 |
نوشته شده توسط : محمد حسین فخرآوری

 اجازه دهید ابتدا تعریفی از بدسکتور داشته باشیم. بد‌سکتور را می‌توان یک کلاستر کوچک از فضای ذخیره‌سازی نامید که معیوب شده است. این سکتور به درخواست‌ها مبنی بر نوشتن و خواندن اطلاعات عکس‌العملی نشان نمی‌دهد تا آنجا که آن را یک سکتور بد و یا همان بدسکتور می‌نامیم.

hard-drive-head


تاريخ انتشار : پنجشنبه 1392/10/05 |
نوشته شده توسط : محمد حسین فخرآوری
تاريخ انتشار : شنبه 1392/09/16 |
نوشته شده توسط : محمد حسین فخرآوری
CREATE PROCEDURE [dbo].[GetList](@TableName NVARCHAR(200),@Fild NVARCHAR(200),@Sort NVARCHAR(200))
AS
declare @SQL nvarchar(max);
SET @SQL = 'SELECT * FROM '+@TableName+' ORDER BY '+@Fild+' '+@Sort+'  ';
exec sp_executesql @SQL



EXEC  [dbo].[GetList] N'B_Categories', N'CategoryName',N'Desc'


:: موضوعات مرتبط: Access، SQL Server
:: برچسب‌ها: مرتب سازی گریدویو به صورت پویا
تاريخ انتشار : چهارشنبه 1392/09/13 |
نوشته شده توسط : محمد حسین فخرآوری

ShrinkDatabase00

Shrink در لغت به معني جمع شدن و يا چروک شدن مي‌باشد. با در نظر گرفتن همين مفهوم مي‌توان گفت Shrink کردن فرآيندي است که در آن فضاي Data File و Log File جمع و جور مي‌شود. (اين تعريف يک تعريف ساده و ابتدايي مي‌باشد)

 ShrinkDatabase01

 همانطور که در تصوير بالا مشاهده مي‌کنيد طي فرآيند Shrink فضاي خالي فايل‌هاي بانک اطلاعاتي تا حد امکان از بين رفته و داده‌ها در يک قسمت جمع مي‌گردند.

لینک مطلب



:: موضوعات مرتبط: SQL Server
:: برچسب‌ها: بررسی تاثیر Shrink کردن Database بر کارایی بانک اط
تاريخ انتشار : یکشنبه 1392/09/03 |
نوشته شده توسط : محمد حسین فخرآوری
SELECT * FROM master.dbo.sysmessages
مثال
2627 : کلید اصلی تکراری


:: موضوعات مرتبط: SQL Server
:: برچسب‌ها: لیست شماره خطا ها
تاريخ انتشار : پنجشنبه 1392/08/30 |
نوشته شده توسط : محمد حسین فخرآوری
یک سمپل درست کردم که با دادن تاریخ مناسبت هاتا پایان سال 1392 خورشیدی مطابق با تقویم استخراج شده توسط مرکز تقویم موسسه ژئوفیزیک دانشگاه تهران است را میده.

لینک مطلب



:: موضوعات مرتبط: Asp.Net
:: برچسب‌ها: مناسبت ها تا پایان سال 1392
تاريخ انتشار : جمعه 1392/07/26 |
نوشته شده توسط : محمد حسین فخرآوری
DECLARE @a VARCHAR(50)= N'.1;.5;1.1;1.5;';
WITH MyWords (ranking, word, string )
AS (
SELECT
1
, CAST(SUBSTRING(@a , 1 , CHARINDEX(';' , @a) - 1) AS VARCHAR(25))
, STUFF(@a , 1 , CHARINDEX(';' , @a) , '')
UNION ALL
SELECT
ranking + 1
, CAST(SUBSTRING(string , 1 , CHARINDEX(';' , string) - 1) AS VARCHAR(25))
, STUFF(string , 1 , CHARINDEX(';' , string) , '')
FROM
MyWords
WHERE
CHARINDEX(';' , string) > 0
)
SELECT [id],[name]FROM [Table_1] WHERE [id] IN(SELECT word FROM MyWords)



:: موضوعات مرتبط: SQL Server
:: برچسب‌ها: ارسال رشته برای شرط in
تاريخ انتشار : پنجشنبه 1392/07/25 |
نوشته شده توسط : محمد حسین فخرآوری

در این مطلب می‌خواهم شما را با نحوه بار گزاری ساعت و تاریخ سیستم سرور با استفاده از JQuery Ajax آشنا کنم.

در بعضی از سایتها با استفاده از جاوا اسکریپت تاریخ و ساعت جاری سیستم کلاینت به او نشان داه می‌شود. 

این روش یک مزیت دارد: اول اینکه این کدها سمت کلاینت اجرا میشن و برای سرور بار اضافی ایجاد نمیکنن. 

و یک عیب هم دارد: در صورتی که ساعت و تاریخ روی سیستم کلاینت تنظیم نباشد، همین ساعت و تاریخ نادرست برای او نمایش داده می‌شود. همین عیب می‌تواند باعث افت کیفیت وب سایت شود.

اما راهی هست که تاریخ و ساعت سیستم سرور برای کاربر نشان داده شود و آن هم استفاده از JQuery Ajax هست. به صورتی که هر ثانیه درخواستی برای یک handler فرستاده می‌شود و آن handler نیز ساعت و تاریخ روی سرور را باز می‌گرداند و این مقدار بازگشته شده را می‌توان در تگی از صفحه وب نمایش داد.

مثال: ابتدا یک صفحه aspx می‌سازیم و تگ زیر را در آن قرار می‌دهیم:

ساعت و تاریخ بار شده از سرور در این تگ باید نشان داده شود.

سپس کدهای اسکریپت زیر را می‌نویسیم:
var auto_referesh = setInterval
 (
     function()
    {
         $.post
         (
            "GetDateTime.ashx",
             function (result) 
            {
                $('#datetime').html(result);
            }
        );
     }, 1000
 
 
 );
با نوشتن این کدها هر ثانیه یک بار، بوسیله Ajax درخواستی برای یک handler به اسم GetDateTime.ashx فرستاده می‌شود. وظیفه این handler برگرداندن تاریخ و ساعت فعلی سیستم سرور است. بعد از دریافت مقدار این مقدار از این handler، آنرا در تگ با شناسه datetime قرار می‌دهیم.
کد استفاده شده در handler هم به این صورت است:

<%@ WebHandler Language="C#" Class="GetDateTime" %>
 
using System;
using System.Web;
 
public class GetDateTime : IHttpHandler {
     
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        context.Response.Write(DateTime.Now.ToString());
    }
  
    public bool IsReusable {
        get {
            return false;
        }
    }
 
}



:: موضوعات مرتبط: Jquery
تاريخ انتشار : دوشنبه 1392/07/22 |
نوشته شده توسط : محمد حسین فخرآوری

کتاب خانه ای برای صفحه بندی DataGrid , Repeater , ...

لینک مطلب


تاريخ انتشار : دوشنبه 1392/07/15 |
نوشته شده توسط : محمد حسین فخرآوری
در دو درس گذشته با DataType ای که با هم نوشتیم؛ می‌توانستیم این پرس‌وجوها را داشته باشیم:
  1. Declare @MyDate JalaliDate = '1392/02/11 21:38:24'  
  2. Select @MyDate.ToString() as MyDateTime  
  3.            , @MyDate.GetDate() as MyDate  
  4.            , @MyDate.GetTime() as MyTime  
  5.            , @MyDate.Year as MyYear  
  6.            , @MyDate.Month as MyMonth  
  7.           , @MyDate.Day as MyDay  
  8.           , @MyDate.Hour as MyHour  
  9.           , @MyDate.Minute as MyMinute  
  10.           , @MyDate.Second as MySecond  
  11.           , @MyDate.JalaliDateAdd('Year',1) as NextYear  
  12.           , @MyDate.JalaliDateAdd('Month',1) as NextMonth  
  13.           , @MyDate.JalaliDateAdd('Day',1) as NextDay  
  14.           , @MyDate.JalaliDateAdd('Hour',1) as NextHour  
  15.           , @MyDate.JalaliDateAdd('Minute',1) as NextMinute  
  16.           , @MyDate.JalaliDateAdd('Second',1) as NextSecond  

که در نهایت خروجی کار به شکل زیر خواهد بود:

با این همه، همان‌سان که در پرس‌وجوی بالا هم می‌بینید؛ ناگزیر شدم تاریخ و زمان را خودم وارد کنم و هرآینه در واقعیت شما جهت پرس‌وجو روی زمان کنونی، ناگزیر به استفاده از یک تابع برای تبدیل تقویم میلادی به خورشیدی هستیم. به نظر شما بهتر نیست دست به کار شویم و تابعی برای تبدیل تاریخ میلادی به خورشیدی بنویسیم؟

برای این‌کار پروژه‌ای را که در دو درس 1 ساختیم باز کنید و سپس روی نام پروژه در Solution Explorer راست‌کلیک کرده و Add New Item را انتخاب کنید.

 
محتویات فایل بازشده را حذف کنید و دستورهای زیر را جای‌گزین کنید:

 using System;  
using System.Data;  
using System.Data.SqlClient;  
using System.Data.SqlTypes;  
using Microsoft.SqlServer.Server;  
  
public partial class UserDefinedFunctions  
{  
    [Microsoft.SqlServer.Server.SqlFunction]  
    public static JalaliDate GetCurrentDateTime()  
    {  
        System.Globalization.PersianCalendar pers = new System.Globalization.PersianCalendar();  
        DateTime CurrentDate = DateTime.Now;  
        JalaliDate jl;  
        jl.Year = (Int16)pers.GetYear(CurrentDate);  
        jl.Month = (byte)pers.GetMonth(CurrentDate);  
        jl.Day = (byte)pers.GetDayOfMonth(CurrentDate);  
        jl.Hour = (byte)pers.GetHour(CurrentDate);  
        jl.Minute = (byte)pers.GetMinute(CurrentDate);  
        jl.Second = (byte)pers.GetSecond(CurrentDate);  
        return jl;  
    }  
}  
 

بار دیگر پروژه را به روشی که در درس یک آموزش داده شد؛ Publish کنید. اکنون می‌توانیم تاریخ و زمان کنونی را در متغیری از نوع JalaliDate وارد کنیم.

Declare @MyDate JalaliDate = dbo.GetCurrentDateTime() 

   یا به این شکل تاریخ و زمان جاری را مشاهده کنیم:

Select dbo.GetCurrentDateTime().ToString()



:: موضوعات مرتبط: SQL Server
:: برچسب‌ها: افزودن یک DataType جدید برای نگه‌داری تاریخ خورشید
تاريخ انتشار : دوشنبه 1392/07/01 |
نوشته شده توسط : محمد حسین فخرآوری

public void SetMetaTags(string title, string description, string keywords)

    {

        HtmlHead headTag = (HtmlHead)Page.Header;

        headTag.Title = title;

        HtmlMeta metaTag = new HtmlMeta();

        metaTag.Name = "Description";

        metaTag.Content = description;

        headTag.Controls.Add(metaTag);

        metaTag = new HtmlMeta();

        metaTag.Name = "Keywords";

        metaTag.Content = keywords;

        headTag.Controls.Add(metaTag);

    }

 


MasterPage MyMasterPage = (MasterPage)Master;

MyMasterPage.SetMetaTags("عنوان صفحه", "توضیحات صفحه", "کلمات کلیدی");

 



:: موضوعات مرتبط: Asp.Net
:: برچسب‌ها: Title, meta Keyword, MetaDecsription
تاريخ انتشار : پنجشنبه 1392/06/28 |
نوشته شده توسط : محمد حسین فخرآوری

وقتی صحبت از معماری 3 لایه میشه یعنی اینکه پروژه شما باید به 3لایه یا 3بخش تقسیم بندی بشه
لایه اول:InterFace Layer
لایه دوم:Business Logic Layer
لایه سوم:Data Acess Layer
درسته که ظاهرا کد نویسی زیاد میشه ولی در عوض کد ها بخش بندی و از هم جدا میشه که مزیت های زیادی داره مثلا هروقت که کار با پایگاه داده دارین سریعا به لایع سوم میرین و ...
اما توضیح کلی راجب لایه ها :
وقتی که داده ها از سمت کاربر ارسال می شه این داده ها به لایه دوم منتقل می شه.کار لایه دوم چک کردن مقادیر،و... هست
زمانی که داده ها از هر جهت "تمییز" و "سازگار" بودن به لایه سوم برای ذخیره در پایگاه داده منتقل میشه
این کلیت معماری 3لایه در طراحی وب سایت هستش
برای درک بیشتر و آسون تر با مثالی از Asp.Net این معماری رو توضیح میدم 

فرض کنید یه پروژه نوشتین که دارای جدولی به نام MyUser هستش که اطلاعات کاربران در آن ذخیره میشه و دارای فیلد های Name,PassWord,...هستش و یه صفحه برای پروژتون طراحی کردین برای ثبت نام کاربران.
خوب چون جدول MyUser رو دارین باید یه کلاس به نام MyUser بسازید که دارای فیلد های این جدول باشه
(به طور کلی در معماری 3لایه برای هر جدول باید یه کلاس بسازید)
که من شبه کد های #C رو اینجا قرار میدم


Public Class MyUser

{

Private int _Id;

Private string_name;

Private string _Password;

public int Id

{

set{_Id=value;}

get{return _Id;}

}

public string  Name

{

set{_name=value;}

get{return _name;}

}

public string  PassWord

{

set{_Password=value;}

get{return _Password;}

}

}

حالا 2کلاس دیگه به نام هایBLL برای لایه دوم و DAL برای لایه سوم بسازید

Public Class BLL

{

DAL d;

public void RegisterBLL(string name,string pass)

{

d = new DAL();

MyUser m = new Myuser();

m.Name = name;

m.PassWord= Hash(pass);

d.RegisterDAL(m);

}

}

Public Class DAL

{

public void RegisterDAL(Myuser temp)

{

//وارد نمودن اطلاعات در دیتا بیس

}

}

 

 

 

وقتی کاربری به صفحه ثبت نام مراجعه میکنه و اطلاعات رو وارد میکنه، اطلاعات از صفحه (لایه اول) گرفته شده و برای لایه دوم(BLL) ارسال میشه

BLL bll = new BLL();

bll.RegisterBLL(name,Pass)

لایه دوم اطلاعات رو چک می کنه .مثلا این کاربر قبلا ثبت نام کرده یا خیر یا در این مثال بالا در لایه دوم پسورد کاربر هش شده سپس برای لایه سوم اطلاعات رو ارسال میکنه و در نهایت اطلاعات در دیتا بیس ذخیره میشه

هیچ نگران نباشین آخه هیچ مطلب مهم و تکنیکالی پشت این معماری نیس و کلیتش همون بود که گفتم

امیدوارم این پست بتونه کمک تون کرده باشه

(و یه نصیحت دوستانه اینکه از تکنولوژی Linq برای برقراری ارتباط با پایگاه داده استفاده کنین دیگه نیازی به نوشتن

کلاس های مربوط به جدول های دیتا بیس نیس آخه Linq خودش از جداول و Store Procedure ها کلاس میسازه و معماری 3لایه خیلی آسون تر پیاده سازی میشه)



:: موضوعات مرتبط: Asp.Net، C#
:: برچسب‌ها: معماری 3لایه, 3Layer, در طراحی وب
تاريخ انتشار : یکشنبه 1392/06/24 |
نوشته شده توسط : محمد حسین فخرآوری

ما در زبان سی شارپ بطور کلی دارای چهار سطح دسترسی بصورت زیر هستیم .

1-private  : دسترسی اختصاصی میباشد. در این حالت عضو مورد نظر از بیرون کلاس قابل مشاهده و دسترسی نخواهد بود و فقط در داخل کلاسی که تعریف میشود قابل دسترسی خواهد بود.

2-public  : دسترسی عام میباشد. عضوی که از نوع public است از بیرون کلاسی که در آن تعریف شده است ، توسط دیگر کلاسها کاملا قابل دسترسی و ویرایش خواهد بود.

3-internal  : تنها در داخل فایل یا اسمبلی فعلی قابل استفاده خواهند بود

4-protected  : تنها در کلاسی که تعریف در آن تعریف شده و کلاسهایی که از آن کلاس مشتق میشوند قابل دسترسی خواهد بود.

در شکل زیر بصورت گرافیکی نحوه سطح دسترسی عناصر را نمایش می دهیم  

 

 

                           

 به شکل اول تصویرنگاه کنید همانطور که می بینید دایره سبز رنگ نشان دهنده سطح دسترسی متغیر public  است. می بینیم که این سطح دسترسی هم در خارج از کلاس و هم د ر خارج از پروژه ما قابل دسترسی است .

دایره های کوچک قرمز رنگ ، نشان دهنده متغیرها و فیلدهایی است با سطح دسترسی private  است همانطور که از شکل پیداست این متغیرها فقط در همان محدوه که تعریف شده اند . قابل دستیابی هستند .

دایره آبی رنگ نشان دهنده سطح دسترسی internal  است . یعنی کلاس یا متغیری از این نوع فقط در سطح همان پروژه قابل دسترسی است و اگر ما فرضا پروژه 2 را ایجاد کنیم و بخواهیم از کلاس با سطح دسترسی internal  در پروژه 2 استفاده کنیم ممکن نیست .

و سرانجام شکلهای نامنتظم قهوه ای رنگ را می بینید که نشان دهنده سطح دسترسی protected  است .

سطح دسترسی دیگری نیز وجود دارد تحت عنوان protected internal  این سطح دسترسی در همان پروژه تعریف شده قابل دسترسی است و علاوه بر آن  اگر کلاسی از پروژه دیگر از آن ارث بری کند نیز قابل دسترسی است .

در واقع برابر با internal +protected  است . از اجتماع این دو در شکل بالا می توانید آن را مشاهده کنید قهوه ای به اضافه رنگ آبی .



:: موضوعات مرتبط: C#
:: برچسب‌ها: سطح دسترسی Access Modifiers
تاريخ انتشار : پنجشنبه 1392/06/21 |


 
 
RSS سایت پزشکان بدون مرز