【问题标题】:Updating entity framework model using Linq使用 Linq 更新实体框架模型
【发布时间】:2015-06-23 08:00:53
【问题描述】:

我在更新实体框架模型中的数据时遇到问题。我在模型中有几张表(UsersUserActivityOrders)。我在表格之间添加了关联,一个在UsersUserActivity 之间,一个在UsersOrders 之间。关联通过列UserID。这两个关联已插入到我的用户表中的两个虚拟列:

public virtual UserActivity UserActivity { get; set; }

public virtual Orders Orders { get; set; }

问题如下:当我编写代码更新表用户时

var context1 = new Entities1();

var chechUser = (from c in context1.Users
                 where c.Username == LabelUsername.Text
                 select c).Single();

chechUser.Name = TextBoxNewName.Text;
context1.SaveChanges();

当我尝试更新实体时,出现以下错误:

列名“UserActivity_UserID”无效。 列名“Orders_UserId”无效。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 异常详细信息:System.Data.SqlClient.SqlException:列名“UserActivity_UserID”无效。 列名“Orders_UserId”无效。

谁能告诉我该怎么做?

谢谢大家的帮助。我通过将这两列添加到 SQL DB 解决了我的问题。现在它工作正常。

【问题讨论】:

  • 你真的应该包括实体,没有它们很难诊断。
  • 您确定您的数据库是最新的吗?如果您正在使用迁移,也许您应该先运行更新数据库。
  • 发布 SQL 表(如果有)并发布模型的整个代码
  • 填充并查看 chechUser 后,列名是什么?您的模型中的列名称是什么?
  • 我想发布我的模型的图像,但我没有足够的声誉(我需要 10 个,而我的是 9 个)。所以我会写列:用户有列-用户ID、姓名、姓氏。 UserActivity 有列: - UserID、LogINTimeDate、ChangedNameTimeDate、ChangedSurnameTimeDate,Orders 有列 - UserID、FirstOrder、LastOrder。

标签: c# sql linq entity-framework


【解决方案1】:

您需要使用以下列更新您的 SQL 服务器:UserActivity_UserID、Orders_UserId。

或者在代码中删除这两列(再次将您的数据库映射到 edmx 文件)。

【讨论】:

  • 我尝试删除列,但随后显示映射错误。您能否更详细地解释一下如何更新 SQL 服务器。我是实体和 SQL 的新手。我应该在 SQL 数据库中添加一些列,还是只是添加一些代码行,将一些值放在这个虚拟列中?
  • 打开你的 SQL 服务器 -> 你的数据库。在那里找到你的桌子。右键单击您的表格,然后进行设计。然后将这两列添加到表中(只需添加具有特定名称和所需类型的两列)。然后再次尝试运行您的代码。
猜你喜欢
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多