نوشتن پرس و جو در Entity Framework با استفاده از LINQ To Entity قسمت دوم
نویسنده: محسن جمشیدی
تاریخ: ۱۳۹۲/۰۴/۱۳ ۱۰:۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
| Family | Name | ID |
| Nasiri | Vahid | یک مقدار Guid |
| Akbari | Mohsen | یک مقدار Guid |
| Jamshidi | Mohsen | یک مقدار Guid |
private static void Query7()
{
using (var context = new StoreDbContext())
{
// Add
context.Customers.Add(new Customer { Name = "Ali", Family = "Jamshidi" });
// change
var customer1 = context.Customers.Single(c => c.Family == "Jamshidi");
customer1.Name = "Mohammad";
// Remove
var customer2 = context.Customers.Single(c => c.Family == "Akbari");
context.Customers.Remove(customer2);
var customers = context.Customers.Where(c => c.Name != "Vahid");
foreach (var cust in customers)
{
Console.WriteLine("Customer Name: {0}, Customer Family: {1}", cust.Name, cust.Family)
}
}
}private static void Query7_1()
{
using (var context = new StoreDbContext())
{
// Add
context.Customers.Add(new Customer { Name = "Ali", Family = "Jamshidi" });
// change
var customer1 = context.Customers.Single(c => c.Family == "Jamshidi");
customer1.Name = "Vahid";
// Remove
var customer2 = context.Customers.Single(c => c.Family == "Akbari");
context.Customers.Remove(customer2);
var customers = context.Customers.Where(c => c.Name != "Vahid");
foreach (var cust in customers)
{
Console.WriteLine("Customer Name: {0}, Customer Family: {1}", cust.Name, cust.Family)
}
}
}private static void Query8()
{
using (var context = new StoreDbContext())
{
// Add
context.Customers.Add(new Customer { Name = "Ali", Family = "Jamshidi" });
// change
var customer1 = context.Customers.Single(c => c.Family == "Jamshidi");
customer1.Name = "Mohammad";
// Remove
var customer2 = context.Customers.Single(c => c.Family == "Akbari");
context.Customers.Remove(customer2);
var customers = context.Customers.Local;
foreach (var cust in customers)
{
Console.WriteLine("Customer Name: {0}, Customer Family: {1}", cust.Name, cust.Family);
}
}
}private static void Query9()
{
using (var context = new StoreDbContext())
{
var customers = context.Customers.Where(c => c.Name == "Mohsen");
customers.Load();
foreach (var cust in context.Customers.Local)
{
Console.WriteLine("Customer Name: {0}, Customer Family: {1}", cust.Name, cust.Family);
}
}
// Output:
// Customer Name: Mohsen, Customer Family: Akbari
// Customer Name: Mohsen, Customer Family: Jamshidi
}این دوجمله رو
«- داده هایی که اخیرا به DbContext اضافه شدهاند ولی هنوز در Database ذخیره نشدهاند، درنظر گرفته نخواهند شد.
- داده هایی که در DbContext حذف شدهاند ولی در Database هستند، در نتیجه پرس و جو خواهند بود.»
میشه خلاصهاش کرد به «تا زمانیکه SaveChanges فراخوانی نشه، از اطلاعات تغییر کرده نمیشه کوئری گرفت (کوئریها همیشه روی دیتابیس انجام میشن)؛ اما خاصیت Local این تغییرات محلی رو داره یا اینکه در change tracker میشه موارد EntityState.Added | EntityState.Modified | EntityState.Unchanged رو هم کوئری گرفت».