IDbSetExtensions.AddOrUpdate का मतलब कोड लिखने में मदद करने के लिए है जो डेटाबेस खाली या पॉप्युलेट है या नहीं। लेकिन वस्तुओं को जोड़ने के लिए अलग-अलग कोड की आवश्यकता होती है। जब डेटाबेस खाली होता है, तो ऑब्जेक्ट्स में अभी तक आईडी नहीं हैं और आप उन्हें नेविगेशन प्रॉपर्टी असाइन करके लिंक करते हैं। जब ऑब्जेक्ट्स पहले से मौजूद हैं, हालांकि, नेविगेशन गुण काम नहीं करते हैं और आपको सीधे विदेशी कुंजी सेट करने की आवश्यकता है। नेविगेशन गुण पीओसीओ जब्त करने की लागत पर, दोनों मामलों में प्रॉक्सी के लिए काम करते हैं। संपादित करें: दरअसल, प्रॉक्सी काम नहीं करते हैं जब दोनों संस्थाएं पुरानी होती हैं।IDbSetExtensions.AddOrUpdate और रिश्तों
दूसरा SaveChanges में यह नमूना क्रैश, फोन जब एफई 0 countryID सेट करने का प्रयास:
public class Country
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
}
public class Person
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
public virtual int CountryID { get; set; }
public virtual Country Country { get; set; }
}
public class Context : DbContext
{
public DbSet<Person> Person { get; set; }
public DbSet<Country> Country { get; set; }
}
class Program
{
static void Foo()
{
using (var db = new Context())
{
//var c = new Country();
var c = db.Country.Create();
c.Name = "usa";
db.Country.AddOrUpdate(x => x.Name, c);
//var p = new Person();
var p = db.Person.Create();
p.Name = "billg";
p.Country = c;
db.Person.AddOrUpdate(x => x.Name, p);
db.SaveChanges();
}
}
static void Main()
{
Database.SetInitializer<Context>(new DropCreateDatabaseAlways<Context>());
Foo();
Foo();
}
}
AddOrUpdate कैसे किया जाता है?
मैं अत्यधिक तुम इसे पढ़ने के लिए सलाह देते हैं http://thedatafarm.com/blog/data-access/take-care-with-ef-4- 3-एडोरअपडेट-विधि/ –