gpt4 book ai didi

c# - 我怎么弄错了我的DataContext?

转载 作者:太空狗 更新时间:2023-10-30 01:26:48 25 4
gpt4 key购买 nike

我使用 LINQ To SQL 已经有一段时间了,我通常在解决方案中执行以下操作:

  • 在一个项目中,我创建了一个 dbml 模式。
  • 在另一个项目中,我创建了一个简单的 DataAccessLayer (DAL),它知道我的第一个项目,并实例化了一个 DataContext。
  • 在第三个项目(业务逻辑)中,我实例化了我的 DAL。

这通常效果很好。然而,这一次,不知道为什么,“它”却不管用了。 “它”是“我正在更新数据库”。我改变了我的代码来做一些测试,但我得到了一个我不明白的结果。

MyDataContext dataContext = new MyDataContext(MyConnectionString);
DataBaseItem dbi = (from item in dataContext.DataBaseItems
where item.ID == 1
select item).First();
dbi.Name= "toto";
// dataContext.GetChangeSet() tells me nothing changed.

我深入研究了 bdi.Name = "toto"; 并将其与它工作的项目中的类似值分配进行了比较(两者都是设计者生成的代码)并发现一些代码丢失了(我把它们写在那里,但我对它们进行了评论,以便您看到缺少的内容):

[Column(Storage="_Name", DbType="NVarChar(250)")]
public string Name
{
get
{
return this._Name;
}
set
{
if ((this._Name!= value))
{
//this.OnLayoutChanging(value);
//this.SendPropertyChanging();
this._Name= value;
//this.SendPropertyChanged("Name");
//this.OnLayoutChanged();
}
}
}

任何人都可以告诉我这些行为什么会丢失,我在哪里搞砸了?

当我执行 dataContext.Refresh(RefreshMode.KeepChanges, dataContext.DataBaseItems); 时,出现错误:

An object specified for refresh is not recognized.

最佳答案

如果您的对象没有主键,则不会跟踪对象的更改。可能 ID 未在 dbml 中设置为主键。

关于c# - 我怎么弄错了我的DataContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187167/

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