gpt4 book ai didi

.net - 使用 Entity Framework 更新主键值

转载 作者:行者123 更新时间:2023-12-01 17:53:18 25 4
gpt4 key购买 nike

我正在尝试从 Entity Framework 中更新复合主键的一个值,但出现此错误:“属性 'CustomerID' 是对象键信息的一部分,无法修改。”

这是我的代码:

Dim customer As Customer = (From c In db.Customer Where c.CustomerID = "xxx" AndAlso c.SiteKey = siteKey).FirstOrDefault
customer.CustomerID = "fasdfasdf"
db.SaveChanges()

似乎太简单了。你真的不能在 Entity Framework 内更新主键吗?我找不到有关该主题的任何文档。谢谢!

最佳答案

你不能而且有充分的理由。见知识管理评论。

我说你可以做的一件事是有两个表,一个包含匿名数据,另一个存储用户登录后的真实数据。

或者你可以(我没有测试或做过)有这种表格布局:

---Customers----
AutoNumber PK <- This links to all other tables in your database, and does NOT change.
CustomerID <- This can change.
CustomerType <- Anonymous or logged in.

当他们登录时,您将 CustomerType 和 CustomerID 更改为您需要的。

因此,您的查询可能如下所示:
Dim customer As Customer = (From c In db.Customer _
Where c.CustomerID = {Some temp ID} _
AndAlso c. CustomerType = "Anonymous").FirstOrDefault
// After user logs in.
customer.CustomerID = {Make a new user ID here}
customer.CustomerType = "LoggedIn" {or what ever}
db.SaveChanges()

注意自动编号主键 从不变化。这样,您与客户表有关系的任何表仍然可以工作,并且不必对主键进行级联更新(这就像用铅笔刺伤自己的眼睛)。

关于.net - 使用 Entity Framework 更新主键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1367751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com