如何更新实体?

2024-04-20

我之前有一个更详细的问题,但我没有答案,我将以更简单的方式提出同样的问题:

I have an EF database with foreign key to another table. enter image description here

我想UPDATE an ENTITY。但我需要这样,我将编写以下代码:

  1. 转到数据库并retrieve通过id获取Member,返回EF Member对象
  2. 对对象进行一些更改OUTSIDEEF 上下文
  3. 发送MODIFEDEF 成员转换为 Save 方法
  4. 在BL层中,保存方法使用上下文并保存更改。

1)

MemberManager currentMemberManager = new MemberManager();
Member NewMember = currentMemberManager.GetById(2);

2)

NewMember.FirstName = "NewFirstName";
NewMember.LanguageId = 1;

3)

currentMemberManager.Save(NewMember);

4)

public void Save2(Member newMember)
{
    using (var Context = new NoxonEntities())
    {
        Member existingMember = Context.Member.First(c => c.Id == newMember.Id);
        existingMember.FirstName = newMember.FirstName;
        existingMember.Language = Context.Language.First(c => c.Id == newMember.LanguageId);
        Context.SaveChanges();//In here I get the error below
    }
}

对数据库的更改已成功提交,但出现错误 更新对象上下文时发生。 ObjectContext 可能是 处于不一致的状态。内部异常消息:参考 发生完整性约束违规:属性值 定义参考约束之间不一致 关系中的主要对象和从属对象。

Note:您可能建议发送不同的课程(例如:公共课程 MyMember) 具有所有必要的属性并且完全独立 来自EF。但这需要大量工作才能将所有 EF 对象转换为 进入我单独的班级。我对吗?

我希望有一种方法可以分离实体足够长的时间,以便我修改它并将值保存到数据库中。 (另外,我尝试了 Detach 方法,它根本不更新任何行)

我已经尝试解决这个问题几个小时了。

请帮助我更好地理解它,我真的需要一个解决方案。非常感谢任何有想法的人。


您可以做一些简单的事情,例如分离实体,然后在准备保存时将其附加到上下文吗?

MemberManager currentMemberManager = new MemberManager();
Member NewMember = currentMemberManager.GetById(2);

The get:

public Member GetById(int id)
{ 
  var member = YourContext.Members.FirstOrDefault(m => m.id == id);
  YourContext.Detach(member);
  return member;
}

保存:

public void Save2(Member newMember)
        {
            using (var Context = new NoxonEntities())
            {
                Context.Attach(newMember);
                Context.ObjectStateManager.ChangeObjectState(newMember, EntityState.Modified);
                Context.SaveChanges();
            }
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更新实体? 的相关文章

随机推荐

  • 单击菜单按钮后,如何在启动新活动之前显示插页式广告?

    我使用选项菜单按钮转到第二个活动 当用户单击该菜单按钮时 启动第二个活动后会显示插页式广告 但我想在启动第二个活动之前显示插页式广告 当用户单击插页式广告的关闭按钮时 第二个活动应该启动 我正在使用下面的代码来显示插页式广告 case R
  • 在 MySQL 8 中使用点数据类型和 st_distance_sphere 查找最近的地点

    我有一张桌子叫place id name coordinates longitude latitude 1 London 0 12574 51 50853 2 Manchester 2 25 53 41667 3 Glasgow 4 25
  • Python:在同一窗口中绘制多个图

    我正在尝试运用我从中学到的东西绘制多个图但具有偏移范围python https stackoverflow com questions 16534551 plotting multiple plots but whith offset ra
  • Android 设备上的 JavaPos?

    我正在寻找从 Android 设备打印到 Epson POS 打印机的解决方案 并且需要任何类型的帮助 那么我认为 JavaPOS 在这种情况下是正确的解决方案吗 我找到了这个例子JavaPOS Java 中的 Hello World ht
  • 在 Linux 计算机上安装 Visual Studio [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 请告诉我如何安装Visual Studio任何版本linux Like UBUNTU 11 0 你需要使用Mono http www mono pro
  • 刷新幻灯片

    我使用的是来自http www slidesjs com http www slidesjs com 我想刷新图像列表 因为我需要动态添加和删除图像 有什么办法可以做到这一点吗 我尝试使用删除 fn pluginName 但没有成功 Tha
  • 着色器/矩阵问题 - 看不到对象

    我试图在屏幕上放置一个立方体并点亮它 我想要在立方体上添加 phong 阴影 当我运行代码时 我可以看到背景图像 但看不到立方体 我相当确定立方体本身是正确的 因为我已经设法用纯色着色器显示它 我已经设法编译着色器程序 但我根本看不到立方体
  • 保存哈夫曼代码时出现问题?

    我想将霍夫曼代码保存到文件中 我怎样才能做到这一点 我将霍夫曼代码保存到字符串中 但生成的文件的大小比原始文件大 一种非常简单的方法是一次写一点 如下所示 unsigned char acc Accumulator of bit waiti
  • 添加按键侦听器并使用 Javascript 单击 Greasemonkey 中的链接

    我想创建一个greasemonkey 脚本 它将在一个邮件站点中添加用于注销操作的快捷键 当前注销链接 注销 hl en 其中有一个id r5 我能够获取链接的节点 但无法调用单击它 我尝试了如下脚本 function key event
  • 我如何找到字符串中多个子字符串的位置(Python 3.4.3 shell)

    以下代码显示 word 在字符串中出现一次的位置 我如何更改我的代码 以便如果 单词 在字符串中出现多次 它将打印所有位置 string input Please input a sentence word input Please inp
  • 使用 Firebase SDK v3 中的数据库密钥进行身份验证?

    首先 我喜欢新的 Firebase 但是 我无法让我的 Swift 项目连接到 Firebase 因为我使用数据库机密来验证设备 在 Firebase SDK 版本 3 之前 我可以使用 Firebase 密钥 现在是数据库密钥 进行身份验
  • 汉诺塔递归算法

    我在理解这个河内塔递归算法时遇到问题 public class MainClass public static void main String args int nDisks 3 doTowers nDisks A B C public
  • 辅助功能:仅限 sr 或 aria-label

    From MDN https developer mozilla org en US docs Web Accessibility ARIA ARIA Techniques Using the aria label attribute 在下
  • Laravel phpunit 异常处理

    我正在使用 Laravel 5 5 和 Vue js 编写一个 Web 应用程序 PHPUnit 版本是 6 3 1 当用户使用表单请求注册时 我正在测试验证错误 Route web php Route post register Auth
  • Rails::Railtie:创建 Rails 3 gem 时遇到问题

    我真的可以用另一双眼睛来看待这个问题 所以我想我会把它发布在这里 不久前 我出于自己的教育目的编写了一个基本的 ActiveRecord 扩展 我最近一直在阅读有关 Railties 的内容 并想尝试让它与 Rails 3 一起工作 我想我
  • Swift 与 Objective C 指针操作问题

    我在 Objective C 中有这段代码 运行良好 list controller gt audioBufferList list gt mBuffers 0 mDataByteSize inNumberFrames kSampleWor
  • 导入Stanford nlp Intellij

    我在使用斯坦福词形还原器时遇到问题 当我使用 Intellij IDE 时 我尝试通过依赖项 Windows 导入它 但我无法通过这种方式访问 所有类 有没有办法在 Intellij 上正确导入 stanford english coren
  • 使用随机数生成引擎

    我正在尝试使用兰德 字节 https www openssl org docs crypto rand htmlOpenSSL 的 API 但我想尝试使用各种随机数生成引擎 在 OpenSSL 中是否有推荐的生成随机字节并添加熵的方法 我在
  • 模型无法通过烧瓶迁移检测到

    我的烧瓶应用程序中有这棵树 api migrations model init py Persons py Comments py other classes py resources init py app py util py This
  • 如何更新实体?

    我之前有一个更详细的问题 但我没有答案 我将以更简单的方式提出同样的问题 I have an EF database with foreign key to another table 我想UPDATE an ENTITY 但我需要这样 我