Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az izolált entitások mellett a modellben definiált kapcsolatokat is használhatja.
Jótanács
A cikk mintáját a GitHubon tekintheti meg.
Új entitások diagramjának hozzáadása
Ha több új kapcsolódó entitást hoz létre, az egyik környezethez való hozzáadása automatikusan a többi hozzáadását is eredményezi.
Az alábbi példában a blog és három kapcsolódó bejegyzés is be lesz szúrva az adatbázisba. A bejegyzések azért találhatók és lettek hozzáadva, mert a Blog.Posts navigációs tulajdonságon keresztül érhetők el.
using (var context = new BloggingContext())
{
var blog = new Blog
{
Url = "http://blogs.msdn.com/dotnet",
Posts = new List<Post>
{
new Post { Title = "Intro to C#" },
new Post { Title = "Intro to VB.NET" },
new Post { Title = "Intro to F#" }
}
};
context.Blogs.Add(blog);
await context.SaveChangesAsync();
}
Jótanács
Az EntityEntry.State tulajdonság használatával csak egyetlen entitás állapotát állíthatja be. Például: context.Entry(blog).State = EntityState.Modified.
Kapcsolódó entitás hozzáadása
Ha a környezet által már nyomon követett entitás navigációs tulajdonságából hivatkozik egy új entitásra, az entitást a rendszer felderíti és beszúrja az adatbázisba.
Az alábbi példában az post entitás azért lesz beszúrva, mert hozzá lesz adva az Postsblog adatbázisból lekért entitás tulajdonságához.
using (var context = new BloggingContext())
{
var blog = await context.Blogs.Include(b => b.Posts).FirstAsync();
var post = new Post { Title = "Intro to EF Core" };
blog.Posts.Add(post);
await context.SaveChangesAsync();
}
Kapcsolatok módosítása
Ha módosítja egy entitás navigációs tulajdonságát, a megfelelő módosítások az adatbázis idegenkulcs-oszlopában lesznek.
Az alábbi példában az post entitás úgy van frissítve, hogy az az új blog entitáshoz tartozik, mert a Blog navigációs tulajdonsága úgy van beállítva, hogy blog-re mutasson. Vegye figyelembe, hogy blog is be lesz szúrva az adatbázisba, mert ez egy új entitás, amelyre az entitás navigációs tulajdonsága hivatkozik, amit már nyomon követ a kontextus (post).
using (var context = new BloggingContext())
{
var blog = new Blog { Url = "http://blogs.msdn.com/visualstudio" };
var post = await context.Posts.FirstAsync();
post.Blog = blog;
await context.SaveChangesAsync();
}
Kapcsolatok eltávolítása
A kapcsolatot úgy távolíthatja el, hogy hivatkozási navigációt nullállít be, vagy eltávolítja a kapcsolódó entitást egy gyűjteménynavigációból.
A kapcsolat eltávolítása a kapcsolatban konfigurált kaszkádolt törlési viselkedésnek megfelelően mellékhatásokat okozhat a függő entitásra nézve.
A szükséges kapcsolatok esetében alapértelmezés szerint kaszkádolt törlési viselkedés van konfigurálva, és a gyermek/függő entitás törlődik az adatbázisból. Választható kapcsolatok esetén a kaszkádolt törlés alapértelmezés szerint nincs konfigurálva, de az idegenkulcs-tulajdonság értéke null lesz.
A szükséges és nem kötelező kapcsolatok című témakörben megtudhatja , hogyan konfigurálható a kapcsolatok szükségessége.
További részletekért a kaszkádolt törlési viselkedések működéséről, azok explicit konfigurálásáról és konvenciók szerinti kiválasztásáról lásd a Kaszkádolt törlés szócikket.
Az alábbi példában a kaszkádolt törlés van konfigurálva a Blog és Post közötti kapcsolaton, így az post entitás törlődik az adatbázisból.
using (var context = new BloggingContext())
{
var blog = await context.Blogs.Include(b => b.Posts).FirstAsync();
var post = blog.Posts.First();
blog.Posts.Remove(post);
await context.SaveChangesAsync();
}