首页 > 其他 > 详细

6.实体与上下文的关系

时间:2019-09-10 02:25:27      阅读:86      评论:0      收藏:0      [点我收藏+]

datacontext会自动跟踪实体状态,当我们调用savechanges保存实体到数据库时,会用到跟踪状态.

但是某些情况下,实体 不在datacontext中,他们没有连接关系,比如:一个datacontext查询,别一个datacontext保存,这种情况下保存的datacontext不知道查询出来的这些实体的状态.

 

添加新的新实体到datacontext有两种方法

using(var context = new BookStore())
{
    Author author = new Author()
    {
        //code here
    };
    
    context.Authors.Add(author);
    Console.WriteLine("Entity State: {0}", context.Entry(author).State);
    context.SaveChanges();
}

using(var context = new BookStore())
{
    Author author = new Author()
    {
        //code here
    };
    
    context.Entry(author).State = EntityState.Added;
    Console.WriteLine("Entity State: {0}", context.Entry(author).State);
    context.SaveChanges();
}

 

 

添加已存在的实体到datacontext也有两种写法

using(var context = new BookStore())
{
    context.Authors.Attach(existingAuthor);
    Console.WriteLine("Entity State: {0}", context.Entry(existingAuthor).State);
    context.SaveChanges();
}

using(var context = new BookStore())
{
    context.Entry(existingAuthor).State = EntityState.Unchanged;//这里也可以修改为modified ,看情况
    Console.WriteLine("Entity State: {0}", context.Entry(existingAuthor).State);
    context.SaveChanges();
}

 

 

ef检测是否存在数据库的方法

public void InsertOrUpdate(Author author)
{
    using (var context = new BookStore())
    {
        context.Entry(author).State = author.AuthorId == 0 ?
            EntityState.Added :
            EntityState.Modified;

        context.SaveChanges();
    }
}

 

6.实体与上下文的关系

原文:https://www.cnblogs.com/nocanstillbb/p/11494829.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!