تعدادی از منابع داده پیش فرض PdfReport جهت کار مستقیم با بانکهای اطلاعاتی مختلف، کوئری نوشتن و نمایش نتایج آنها طراحی شدهاند.
در این بین با توجه به اینکه دات نت پشتیبانی توکاری از SQL Server دارد، اتصال و استفاده از توانمندیهای آن نیاز به کتابخانه جانبی خاصی ندارد. اما برای کار با بانکهای اطلاعاتی دیگر نیاز خواهد بود تا پروایدر ADO.NET آنها را تهیه و به برنامه اضافه کنیم.
چهار نمونه از منابع داده پیش فرضی که در متد ...
در گزارشات، گاهی از اوقات نیاز خواهد شد تا تعدادی ستون جدید را بر اساس مقادیر فیلدهای موجود در منبع داده گزارش، به صورت پویا محاسبه و تولید کنیم (ایجاد ستونهایی که در منبع داده وجود خارجی ندارند). در ادامه با نحوه انجام اینکار در PdfReport آشنا خواهیم شد.
در ابتدا کدهای کامل گزارش این قسمت را در ادامه ملاحظه خواهید کرد (در این کلاس از دو کلاس User و AppPath قسمت قبل نیز استفاده شده است):
using System;
using System ...
مدتی هست که در حال تهیه کتابخانهی گزارش سازی مبتنی بر iTextSharp هستم و عمدهی استفاده از آن برای من تاکنون، تهیه گزارشات باکیفیت PDF فارسی تحت وب بوده؛ هر چند این کتابخانه وابستگی خاصی به فناوری مورد استفاده ندارد و با WinForms، WPF، مشتقات ASP.NET ، سرویسهای WCF و کلا هرجایی که دات نت فریم ورک کامل در دسترس باشد، قابل استفاده است. همچنین به منبع داده خاصی گره نخورده است و حتی میتوانید از یک anonymously typed list عدم متصل به بانک اطلا ...
استفاده از Aggregate functions یا توابع تجمعی چه در زمان SQL نویسی مستقیم و یا در حالت استفاده از LINQ to Entities نیاز به ملاحظات خاصی دارد که عدم رعایت آنها سبب کرش برنامه در زمان موعد خواهد شد. در ادامه تعدادی از این موارد را مرور خواهیم کرد.
ابتدا مدلهای برنامه را در نظر بگیرید که از یک صورتحساب، به همراه ریز قیمتهای آیتمهای مرتبط با آن تشکیل شده است:
public class Bill
{
public int Id { set ...
یکی از مواردی که در EF Code First سبب سردرگمی تازهکاران میشود (بارها در کامنتهای سایت مطرح شده)، فراخوانی متد Database.SetInitializer و ... عدم تشکیل بانک اطلاعاتی در این لحظه است. تنها کاری که توسط متد Database.SetInitializer صورت میگیرد، مشخص سازی استراتژی نحوه آغاز بانک اطلاعاتی است و نه اجرای آن استراتژی.
این اجرا تا زمانیکه اولین کوئری به بانک اطلاعاتی ارسال نشود مثلا فراخوانی context.Entity.Find، به تعویق خواهد افتاد. به ...
اگر از روش Fluent-API برای تنظیم و افزودن نگاشتهای کلاسها استفاده کنیم، با زیاد شدن آنها ممکن است در این بین، افزودن یکی فراموش شود یا کلا اضافه کردن دستی آنها در متد OnModelCreating آنچنان جالب نیست. میشود اینکار را به کمک Reflection سادهتر و خودکار کرد:
void loadEntityConfigurations(Assembly asm, DbModelBuilder modelBuilder, string nameSpace)
{
var configurations = asm.GetTypes()
...
EF Code first هربار در حین آغاز اجرای برنامه و اولین کوئری که به بانک اطلاعاتی ارسال میکند، کار تشخیص روابط بین کلاسها و همچنین نگاشت آنها را به بانک اطلاعاتی، انجام میدهد. این مورد شاید با تعداد کم کلاسها آنچنان به نظر نرسد، اما اگر تعداد کلاسهای شما به بالای 200 عدد رسید، زمان آغاز برنامه آزار دهنده خواهد شد. راه حلی برای این مساله وجود دارد به نام ایجاد Viewهای متناظر با نگاشتها و سپس کامپایل آن به عنوان جزئی از برنامه، که در ادا ...