我使用 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);
,我收到错误:
无法识别指定刷新的对象。
如果您的对象没有主键,则不会跟踪对象的更改。很可能 ID 未在 dbml 中设置为主键。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)