【发布时间】:2014-12-23 08:13:39
【问题描述】:
让我们假设以下类:
public class Author
{
public virtual string Name { get; set; }
public virtual List<Book> Books { get; set; }
}
public class Book
{
public virtual string Name { get; set; }
public virtual Author Author { get; set; }
}
public class Controller
{
public void DeleteBook(Book book)
{
var author = book.Author; //first check if it is loaded, not to invoke lazy loading?
author.Books.Remove(book) //check if the books collection is loaded?
book.Author = null;
Context.Set<Book>().Remove(book);
}
}
我的问题是 - EF 有没有办法检查两个“已加载”状态? 我想确保书籍作者和书籍收藏不会被加载只是为了解除关联。
我想写这样的东西:
public class Controller
{
public void DeleteBook(Book book)
{
if (EF.IsLoaded(book.Author)) //has it been (lazy) loaded / initialized?
{
if (EF.IsLoaded(book.Author.Books) //has it been (lazy) loaded / initialized?
{
book.Author.Books.Remove(book);
}
book.Author = null;
}
Context.Set<Book>().Remove(book);
}
}
这可能吗?
【问题讨论】:
-
出于兴趣 你所说的不相关是什么意思?相关对象是否已加载到上下文中这一事实不会改变关联。
标签: c# entity-framework collections lazy-loading proxy-classes