Account
) has several folders with letters ( MessageFolder
). Each folder contains several message chains ( MessageThread
), while one chain can be in multiple folders at the same time ( ThreadsInFolders
). Each thread consists of many letters. In this case, the chains are rummaging between accounts, letters - no. public class Account { public int Id { get; set; } [Required] public string Name { get; set; } } public class Message { public int Id { get; set; } public bool IsRead { get; set; } public DateTime Date { get; set; } public string Text { get; set; } [Required] public virtual MessageThread Thread { get; set; } [Required] public virtual Account Owner { get; set; } [Required] public virtual Account Sender { get; set; } [Required] public virtual Account Receiver { get; set; } } public class MessageThread { public int Id { get; set; } [Required] [StringLength(150)] public string Subject { get; set; } public virtual ICollection<MessageFolder> Folders { get; set; } } public class MessageFolder { public int Id { get; set; } public string Name { get; set; } [Required] public Account Owner { get; set; } public virtual ICollection<MessageThread> Threads { get; set; } }
Find
method). context.Messages.AsNoTracking().OrderBy(f => f.Id).Take(count) .Include(f => f.Owner).Include(f => f.Sender).Include(f => f.Receiver) .ToList();
SELECT TOP (100) [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent2].[Id] AS [Id1], [Extent2].[Name] AS [Name], [Extent3].[Id] AS [Id2], [Extent3].[Name] AS [Name1], [Extent4].[Id] AS [Id3], [Extent4].[Name] AS [Name2] FROM [dbo].[Message] AS [Extent1] INNER JOIN [dbo].[Account] AS [Extent2] ON [Extent1].[Owner_Id] = [Extent2].[Id] INNER JOIN [dbo].[Account] AS [Extent3] ON [Extent1].[Sender_Id] = [Extent3].[Id] INNER JOIN [dbo].[Account] AS [Extent4] ON [Extent1].[Receiver_Id] = [Extent4].[Id] ORDER BY [Extent1].[Id] ASC
AsNoTracking
disables EF tracking of received objects (they will not be cached); Include
- loads the specified related entities (navigation property / navigation properties) through the generation, most often, INNER JOIN
; the rest is LINQ familiar to everyone.Include
. Strictly speaking, the final realization of what you may need occurs at the presentation level, so the most logical arrangement of all Include
is there, or at the neighboring level (for example, controllers in MVC). In fact, this means that you have to drag IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
|
|
|
---|---|---|
|
|
|
|
|
|
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
IQueryable , , , Linq2Entities, . (--) . , extension methods IQueryable , .
Find
. Find , . , context.Messages.Find(1)
, . . , .
context.Accounts.Load(); // - var m = context.Messages.First(); Console.WriteLine(m.Owner.Name);
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[Name] AS [Name] FROM [dbo].[Account] AS [Extent1] GO SELECT TOP (1) [c].[Id] AS [Id], [c].[IsRead] AS [IsRead], [c].[Date] AS [Date], [c].[Text] AS [Text], [c].[Thread_Id] AS [Thread_Id], [c].[Owner_Id] AS [Owner_Id], [c].[Sender_Id] AS [Sender_Id], [c].[Receiver_Id] AS [Receiver_Id] FROM [dbo].[Message] AS [c]
context.Messages.Include(f=>f.Owner).First()
. : Include
SQL-, .
, , , , context.Set().Local, , . SaveChanges
. . Linq2Sql.
: 1000 EF 2-3 , Linq2Sql. , API , Linq2Sql .
. Add
Added
. SubmitChanges
, INSERT
. navigation property, , Added
( ).
:
ValidateOnSaveEnabled
AutoDetectChangesEnabled
. . . , GC . , 100 .
StackOverflow .
EF , ( ) Linq2Sql. , , Linq2Sql.
.NET ORM-. Bulk-. , SQL , ORM .
, . EF :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); foreach (var m in messages) m.IsRead = true; context.SaveChanges();
SQL SELECT [Extent1].[Id] AS [Id], [Extent1].[IsRead] AS [IsRead], [Extent1].[Date] AS [Date], [Extent1].[Text] AS [Text], [Extent1].[Thread_Id] AS [Thread_Id], [Extent1].[Owner_Id] AS [Owner_Id], [Extent1].[Sender_Id] AS [Sender_Id], [Extent1].[Reciever_Id] AS [Reciever_Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 update [dbo].[Message] set [IsRead] = @0 where ([Id] = @1) --(N )
-, , . , , , – . , , . .
update/delete . , .
EntityFramework.Extended :
var messages = context.Messages.Where(f=>f.Thread.Id == threadId); messages.Update(f => new Message {IsRead = true});
SQL UPDATE [dbo].[Message] SET [IsRead] = @p__update__0 FROM [dbo].[Message] AS j0 INNER JOIN ( SELECT [Extent1].[Id] AS [Id] FROM [dbo].[Message] AS [Extent1] WHERE [Extent1].[Thread_Id] = @p__linq__0 ) AS j1 ON (j0.[Id] = j1.[Id])
. , SaveChanges
– SQL . , - , /.
, , dynamic ( , , IntelliTrace), . (EntityFramework ).
10 , 10000 , EntityFramework 8 935 EntityFramework.Extended 28 83
, EntityFramework.Extended , . .
navigation property
– . « !» :
var count = folder.Threads.Count();
, navigation properties, , SQL.
SQL SELECT [Extent2].[Id] AS [Id], [Extent2].[Subject] AS [Subject] FROM [dbo].[ThreadsInFolders] AS [Extent1] INNER JOIN [dbo].[MessageThread] AS [Extent2] ON [Extent1].[MessageThread_Id] = [Extent2].[Id] WHERE [Extent1].[MessageFolder_Id] = @EntityKeyValue1
EF, Linq2Sql, Count()
, Any()
, , navigation property, . , «» . , , :
var count = context.Threads.Count(f => f.Folders.Any(e => e.Id == folder.Id)));
SQL SELECT [GroupBy1].[A1] AS [C1] FROM ( SELECT COUNT(1) AS [A1] FROM [dbo].[MessageThread] AS [Extent1] WHERE EXISTS (SELECT 1 AS [C1] FROM [dbo].[ThreadsInFolders] AS [Extent2] WHERE ([Extent1].[Id] = [Extent2].[MessageThread_Id]) AND ([Extent2].[MessageFolder_Id] = @p__linq__0) ) ) AS [GroupBy1]
, , , , , « ».
– , .
:
Response.Cache.SetLastModified(lastUpdated);
lastUpdated
– , .
, ASP.NET MVC ToUniversalTime()
, :
if (utcDate > DateTime.UtcNow) { throw new ArgumentOutOfRangeException("utcDate"); }
– , DateTime
Kind
DateTimeKind.Undefined
( , , - UTC ). , , ( DateTimeKind
), ToUniversalTime()
ToLocalTime()
. , GMT - N.
EF, Linq2Sql , , . , code first . ObjectMaterialized
( ) . DateTime
, ComplexType
, reference type.
RequiredAttribute
EF.
, Owner
, Sender
, Receiver
Thread
Required
. -, , NOT NULL
, -, EF.
, -, ?
var message = context.Messages.Find(1); message.IsRead = true; context.SaveChanges();
, - . DbEntityValidationException
.
RequiredAttribute
, null, . , , .
: (), (), try-catch
SaveChanges
catch
(), , (), RequiredAttribute
NOT NULL
Fluent API. , , , , , ( Required
null UPDATE
). , , .
(tl;dr)
EF - ? . , Microsoft - EF.
, EF , , . , , , EF.
EF Linq2Sql? , , . code first ( ), . , ( EF6 ). -- ( , ) .. ORM- EF – .
, , - Entity Framework. // , . .
Source: https://habr.com/ru/post/164483/
All Articles