我是靠谱客的博主 潇洒花瓣,最近开发中收集的这篇文章主要介绍EntityFrameworkCore 中的 Attach 方法Attach 的坑,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Attach 的坑

ModelFiledDatabase ValueConsole Value
UserPhone+123000000000+12333333333
UserEmailnulleeeeeee
UserId11
dbcontext.Users.Add(new User()
    {
        UserName = "test1",
        CreatedAt = DateTime.Now
        Phone = "+1230000000"
    });
dbcontext.SaveChanges();

var user = new User()
{
    Id = 1,
    Phone = "+12333333333",
    Email = "eeeeeeee"
};
dbcontext.Users.Attach(user); 
//上面语句会抛异常,原因是dbcontext 已经跟踪了一个相同Id的实体,所以使用Attach注意当前的上下文

var user = new User()
{
    Id = 1,
    Phone = "+12333333333",
    Email = "eeeeeeee",
    UpdatedAt = DateTime.Now
};
var entryEntity = dbContext.Users.Attach(user1);

//entryEntity.State = EntityState.Unchanged; 有没有这句话结果是一样的
entryEntity.Property(p => p.Phone).IsModified = true;
entryEntity.Property(p => p.Email).IsModified = false;
dbContext.SaveChanges();

//数据库中只有明确标为`IsModified`为`true`的 `Phone`的值更改了,其余值保持不变

var item = dbContext.Users.FirstAsync().Result;
//item 的值和 user 中值完全相同 
var user = new User()
{
    Id = 1,
    Phone = "+12333333333",
    Email = "eeeeeeee",
    UpdatedAt = DateTime.Now
};
var entryEntity = dbContext.Users.Attach(user1);

entryEntity.State = EntityState.Modified;
entryEntity.Property(p => p.Phone).IsModified = true;
entryEntity.Property(p => p.Email).IsModified = false;
dbContext.SaveChanges();

//数据库中只有明确标为`IsModified`为`false`的 `Emial`的值没有更改,其余值都会做更改

var item = dbContext.Users.FirstAsync().Result;
//item 的值和 user 中值完全相同 
var user = dbContext.Users.FirstAsync().Result;
var userTemp = new User { Id = 1 };
dbContext.Users.Attach(userTemp);
//报异常,原因同例1
var user = dbContext.Users.AsNoTracking().FirstAsync().Result;
var userTemp = new User { Id = 1 };
dbContext.Users.Attach(userTemp);
//不报异常

转载于:https://www.cnblogs.com/ArvinZhao/p/10844559.html

最后

以上就是潇洒花瓣为你收集整理的EntityFrameworkCore 中的 Attach 方法Attach 的坑的全部内容,希望文章能够帮你解决EntityFrameworkCore 中的 Attach 方法Attach 的坑所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部