اس کیوال سرور
امنیت
توسعه وب
دات نت فریم ورک
دبلیو پی اف و سیلور لایت
سی و مشتقات
محیطهای مجتمع توسعه
مرورگرها
ویندوز
using SisoDb.Sql2008; namespace SisoDbTests { public class Customer { public int Id { get; set; } public int CustomerNo { get; set; } public string Name { get; set; } } class Program { static void Main(string[] args) { /*var cnInfo = new SqlCe4ConnectionInfo(@"Data source=sisodb2013.sdf;"); var db = new SqlCe4DbFactory().CreateDatabase(cnInfo); db.EnsureNewDatabase();*/ var cnInfo = new Sql2008ConnectionInfo(@"Data Source=(local);Initial Catalog=sisodb2013;Integrated Security = true"); var db = new Sql2008DbFactory().CreateDatabase(cnInfo); db.EnsureNewDatabase(); var customer = new Customer { CustomerNo = 20, Name = "Vahid" }; db.UseOnceTo().Insert(customer); using (var session = db.BeginSession()) { var info = session.Query<Customer>().Where(c => c.CustomerNo == 20).FirstOrDefault(); var info2 = session.Query<Customer>().Where(c => c.CustomerNo == 20 && c.Name=="Vahid").FirstOrDefault(); } } } }
var info = session.Query<Customer>().Where(c => c.CustomerNo == 20).FirstOrDefault();
SELECT DISTINCT TOP(1) (s.[StructureId]), s.[Json] FROM [CustomerStructure] s LEFT JOIN [CustomerIntegers] mem0 ON mem0.[StructureId] = s.[StructureId] AND mem0.[MemberPath] = 'CustomerNo' WHERE (mem0.[Value] = 20);
var info2 = session.Query<Customer>().Where(c => c.CustomerNo == 20 && c.Name=="Vahid").FirstOrDefault();
SELECT DISTINCT TOP(1) (s.[StructureId]), s.[Json] FROM [CustomerStructure] s LEFT JOIN [CustomerIntegers] mem0 ON mem0.[StructureId] = s.[StructureId] AND mem0.[MemberPath] = 'CustomerNo' LEFT JOIN [CustomerStrings] mem1 ON mem1.[StructureId] = s.[StructureId] AND mem1.[MemberPath] = 'Name' WHERE ((mem0.[Value] = 20) AND (mem1.[Value] = 'Vahid'));
void WriteFile() { using (var doc = new Document(PageSize.LETTER)) { using (var fs = new FileStream("test.pdf", FileMode.Create)) { using (var writer = PdfWriter.GetInstance(doc, fs)) { doc.Open(); var blueFont = FontFactory.GetFont("Arial", 12, Font.NORMAL, BaseColor.BLUE); doc.Add(new Chunk("Go to URL", blueFont).SetAction(new PdfAction("http://www.google.com/", false))); doc.NewPage(); doc.Add(new Chunk("Go to Test", blueFont).SetLocalGoto("entry1")); doc.NewPage(); doc.Add(new Chunk("Test").SetLocalDestination("entry1")); doc.Close(); } } } }
using System; using System.Collections.Generic; using System.IO; using System.Linq; using iTextSharp.text.pdf; namespace ReplaceLinks { public class ReplacePdfLinks { Dictionary<string, PdfObject> _namedDestinations; PdfReader _reader; public string InputPdf { set; get; } public string OutputPdf { set; get; } public Func<Uri, string> UriToNamedDestination { set; get; } public void Start() { updatePdfLinks(); saveChanges(); } private PdfArray getAnnotationsOfCurrentPage(int pageNumber) { var pageDictionary = _reader.GetPageN(pageNumber); var annotations = pageDictionary.GetAsArray(PdfName.ANNOTS); return annotations; } private static bool hasAction(PdfDictionary annotationDictionary) { return annotationDictionary.Get(PdfName.SUBTYPE).Equals(PdfName.LINK); } private static bool isUriAction(PdfDictionary annotationAction) { return annotationAction.Get(PdfName.S).Equals(PdfName.URI); } private void replaceUriWithLocalDestination(PdfDictionary annotationAction) { var uri = annotationAction.Get(PdfName.URI) as PdfString; if (uri == null) return; if (string.IsNullOrWhiteSpace(uri.ToString())) return; var namedDestination = UriToNamedDestination(new Uri(uri.ToString())); if (string.IsNullOrWhiteSpace(namedDestination)) return; PdfObject entry; if (!_namedDestinations.TryGetValue(namedDestination, out entry)) return; annotationAction.Remove(PdfName.S); annotationAction.Remove(PdfName.URI); var newLocalDestination = new PdfArray(); annotationAction.Put(PdfName.S, PdfName.GOTO); var xRef = ((PdfArray)entry).First(x => x is PdfIndirectReference); newLocalDestination.Add(xRef); newLocalDestination.Add(PdfName.FITH); annotationAction.Put(PdfName.D, newLocalDestination); } private void saveChanges() { using (var fileStream = new FileStream(OutputPdf, FileMode.Create, FileAccess.Write, FileShare.None)) using (var stamper = new PdfStamper(_reader, fileStream)) { stamper.Close(); } } private void updatePdfLinks() { _reader = new PdfReader(InputPdf); _namedDestinations = _reader.GetNamedDestinationFromStrings(); var pageCount = _reader.NumberOfPages; for (var i = 1; i <= pageCount; i++) { var annotations = getAnnotationsOfCurrentPage(i); if (annotations == null || !annotations.Any()) continue; foreach (var annotation in annotations.ArrayList) { var annotationDictionary = (PdfDictionary)PdfReader.GetPdfObject(annotation); if (!hasAction(annotationDictionary)) continue; var annotationAction = annotationDictionary.Get(PdfName.A) as PdfDictionary; if (annotationAction == null) continue; if (!isUriAction(annotationAction)) continue; replaceUriWithLocalDestination(annotationAction); } } } } }
new ReplacePdfLinks { InputPdf = @"test.pdf", OutputPdf = "mod.pdf", UriToNamedDestination = uri => { if (uri.Host.ToLowerInvariant().Contains("google.com")) { return "entry1"; } return string.Empty; } }.Start();
annotationAction.Put(PdfName.URI, new PdfString("http://www.bing.com/"));
newLocalDestination.Add((PdfObject)_reader.GetPageOrigRef(pageNum: 2));RemovePdfLinks.7z
The ALTER DATABASE statement must run in autocommit mode (the default transaction management mode) and is not allowed in an explicit or implicit transaction.
ALTER DATABASE dbname SET DELAYED_DURABILITY = DISABLED | ALLOWED | FORCED;
COMMIT TRANSACTION WITH (DELAYED_DURABILITY = ON);
BEGIN ATOMIC WITH (DELAYED_DURABILITY = ON, ...)
CREATE TABLE tblData( ID INT IDENTITY(1, 1), Data1 VARCHAR(50), Data2 INT ); CREATE CLUSTERED INDEX PK_tblData ON tblData(ID); CREATE NONCLUSTERED INDEX IX_tblData_Data2 ON tblData(Data2); ------------------------- alter database testdb2 SET DELAYED_DURABILITY = FORCED; ------------------------- SET NOCOUNT ON Print 'DELAYED_DURABILITY = FORCED' DECLARE @counter AS INT = 0 DECLARE @start datetime = getdate() WHILE (@counter < 10000) BEGIN INSERT INTO tblData (Data1, Data2) VALUES('My Data', @counter) SET @counter += 1 END Print DATEDIFF(ms,@start,getdate()); GO ------------------------- alter database testdb2 SET DELAYED_DURABILITY = DISABLED; truncate table tblData; ------------------------- SET NOCOUNT ON Print 'DELAYED_DURABILITY = DISABLED' DECLARE @counter AS INT = 0 DECLARE @start datetime = getdate() WHILE (@counter < 10000) BEGIN INSERT INTO tblData (Data1, Data2) VALUES('My Data', @counter) SET @counter += 1 END Print DATEDIFF(ms,@start,getdate()); GO -----------------------
DELAYED_DURABILITY = FORCED 666 DELAYED_DURABILITY = DISABLED 2883
using System;
using System.Collections.Generic;
namespace EF_Sample02.Models
{
public class User
{
public int Id { set; get; }
public DateTime AddDate { set; get; }
public string Name { set; get; }
public string LastName { set; get; }
public string Email { set; get; }
public string Description { set; get; }
public byte[] Photo { set; get; }
public IList<Project> Projects { set; get; }
}
}
using System;
namespace EF_Sample02.Models
{
public class Project
{
public int Id { set; get; }
public DateTime AddDate { set; get; }
public string Title { set; get; }
public string Description { set; get; }
public virtual User User { set; get; }
}
}
using System;
using System.Collections.Generic;
using System.Data.Entity;
using EF_Sample02.Models;
namespace EF_Sample02
{
public class Sample2Context : DbContext
{
public DbSet<User> Users { set; get; }
public DbSet<Project> Projects { set; get; }
}
public class Sample2DbInitializer : DropCreateDatabaseAlways<Sample2Context>
{
protected override void Seed(Sample2Context context)
{
context.Users.Add(new User
{
AddDate = DateTime.Now,
Name = "Vahid",
LastName = "N.",
Email = "name@site.com",
Description = "-",
Projects = new List<Project>
{
new Project
{
Title = "Project 1",
AddDate = DateTime.Now.AddDays(-10),
Description = "..."
}
}
});
base.Seed(context);
}
}
}
<connectionStrings>
<add
name="Sample2Context"
connectionString="Data Source=(local);Initial Catalog=testdb2012;Integrated Security = true"
providerName="System.Data.SqlClient"
/>
</connectionStrings>
using System;
using System.Data.Entity;
namespace EF_Sample02
{
class Program
{
static void Main(string[] args)
{
Database.SetInitializer(new Sample2DbInitializer());
using (var db = new Sample2Context())
{
var project1 = db.Projects.Find(1);
Console.WriteLine(project1.Title);
}
}
}
}
CREATE TABLE [dbo].[Users](
[Id] [int] IDENTITY(1,1) NOT NULL,
[AddDate] [datetime] NOT NULL,
[Name] [nvarchar](max) NULL,
[LastName] [nvarchar](max) NULL,
[Email] [nvarchar](max) NULL,
[Description] [nvarchar](max) NULL,
[Photo] [varbinary](max) NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Projects](
[Id] [int] IDENTITY(1,1) NOT NULL,
[AddDate] [datetime] NOT NULL,
[Title] [nvarchar](max) NULL,
[Description] [nvarchar](max) NULL,
[User_Id] [int] NULL,
CONSTRAINT [PK_Projects] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Projects] WITH CHECK ADD CONSTRAINT [FK_Projects_Users_User_Id] FOREIGN KEY([User_Id])
REFERENCES [dbo].[Users] ([Id])
GO
ALTER TABLE [dbo].[Projects] CHECK CONSTRAINT [FK_Projects_Users_User_Id]
GO
public class Project
{
[Key]
public int ThisIsMyPrimaryKey { set; get; }
[MaxLength(50, ErrorMessage = "حداکثر 50 حرف"), MinLength(4, ErrorMessage = "حداقل 4 حرف")]
public string Title { set; get; }
[Table("tblProject", Schema="guest")]
public class Project
[Column("DateStarted", Order = 4, TypeName = "date")]
public DateTime AddDate { set; get; }
[ConcurrencyCheck]
public string Name { set; get; }
[Timestamp]
public byte[] RowVersion { set; get; }
using System;
using System.Data.Entity;
namespace EF_Sample02
{
class Program
{
static void Main(string[] args)
{
Database.SetInitializer(new Sample2DbInitializer());
using (var db = new Sample2Context())
{
//update
var user = db.Users.Find(1);
user.Name = "User name 1";
db.SaveChanges();
}
}
}
}
exec sp_executesql N'update [dbo].[Users]
set [Name] = @0
where (([Id] = @1) and ([Name] = @2))
',N'@0 nvarchar(max) ,@1 int,@2 nvarchar(max) ',@0=N'User name 1',@1=1,@2=N'Vahid'
//delete
var user = db.Users.Find(1);
db.Users.Remove(user);
db.SaveChanges();
exec sp_executesql N'delete [dbo].[Users]
where (([Id] = @0) and ([Name] = @1))',N'@0 int,@1 nvarchar(max) ',@0=1,@1=N'Vahid'
exec sp_executesql N'delete [dbo].[Users]
where ((([Id] = @0) and ([Name] = @1)) and ([RowVersion] = @2))',N'@0 int,@1 nvarchar(max) ,
@2 binary(8)',@0=1,@1=N'Vahid',@2=0x00000000000007D1
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { set; get; }
public enum DatabaseGeneratedOption
{
None = 0,
Identity = 1,
Computed = 2
}
[NotMapped]
public string FullName
{
get { return Name + " " + LastName; }
}
using System.ComponentModel.DataAnnotations;
namespace EF_Sample02.Models
{
[ComplexType]
public class InterestComponent
{
[MaxLength(450, ErrorMessage = "حداکثر 450 حرف")]
public string Interest1 { get; set; }
[MaxLength(450, ErrorMessage = "حداکثر 450 حرف")]
public string Interest2 { get; set; }
}
}
public InterestComponent Interests { set; get; }
CREATE TABLE [dbo].[Users](
---...
[Interests_Interest1] [nvarchar](450) NULL,
[Interests_Interest2] [nvarchar](450) NULL,
---...
namespace EF_Sample02.Models
{
public class User
{
public InterestComponent Interests { set; get; }
public User()
{
Interests = new InterestComponent();
}
}
}
[ForeignKey("FK_User_Id")]
public virtual User User { set; get; }
public int FK_User_Id { set; get; }
public class Book
{
public int ID {get; set;}
public string Title {get; set;}
[InverseProperty("Books")]
public Author Author {get; set;}
}
public class Author
{
public int ID {get; set;}
public string Name {get; set;}
[InverseProperty("Author")]
public virtual ICollection<Book> Books {get; set;}
}
public class Book
{
public int ID {get; set;}
public string Title {get; set;}
public Author FirstAuthor {get; set;}
public Author SecondAuthor {get; set;}
}
public class Author
{
public int ID {get; set;}
public string Name {get; set;}
public virtual ICollection<Book> BooksAsFirstAuthor {get; set;}
public virtual ICollection<Book> BooksAsSecondAuthor {get; set;}
}
public class Book
{
public int ID {get; set;}
public string Title {get; set;}
[InverseProperty("BooksAsFirstAuthor")]
public Author FirstAuthor {get; set;}
[InverseProperty("BooksAsSecondAuthor")]
public Author SecondAuthor {get; set;}
}
public class Author
{
public int ID {get; set;}
public string Name {get; set;}
[InverseProperty("FirstAuthor")]
public virtual ICollection<Book> BooksAsFirstAuthor {get; set;}
[InverseProperty("SecondAuthor")]
public virtual ICollection<Book> BooksAsSecondAuthor {get; set;}
}
CREATE TABLE MyTable
(
ID int identity Primary key,
Name char(100),
Email char(100)
)
WITH (DATA_COMPRESSION = Row);
GO
Alter TABLE MyTable REBUILD WITH (DATA_COMPRESSION=Row, MAXDOP=2);
CREATE TABLE MyTable
(
ID int identity Primary key,
Name char(100),
Email char(100)
)
WITH (DATA_COMPRESSION = Page);
Alter TABLE MyTable REBUILD WITH (DATA_COMPRESSION=Page, MAXDOP=2);
-- بررسی اینکه چه میزان فضا با اعمال فشرده سازی صفحات قابل صرفه جویی خواهد بود
EXEC sp_estimate_data_compression_savings 'schemaname', 'TableName', NULL, NULL, 'PAGE';
-- بررسی اینکه چه میزان فضا با اعمال فشرده سازی ردیفها قابل صرفه جویی خواهد بود
EXEC sp_estimate_data_compression_savings 'schemaname', 'TableName', NULL, NULL, 'ROW';
USE dbName;
SELECT objectname = OBJECT_NAME(s.object_id),
indexname = i.name,
i.index_id,
reads = range_scan_count + singleton_lookup_count,
'leaf_writes' = leaf_insert_count + leaf_update_count + leaf_delete_count,
'leaf_page_splits' = leaf_allocation_count,
'nonleaf_writes' = nonleaf_insert_count + nonleaf_update_count +
nonleaf_delete_count,
'nonleaf_page_splits' = nonleaf_allocation_count
FROM sys.dm_db_index_operational_stats (DB_ID(), NULL, NULL, NULL) AS s
INNER JOIN sys.indexes AS i
ON i.object_id = s.object_id
WHERE OBJECTPROPERTY(s.object_id, 'IsUserTable') = 1
AND i.index_id = s.index_id
ORDER BY
leaf_writes DESC,
nonleaf_writes DESC