LinqToSqlDataSource 中的自定义删除
Custom Deleting in LinqToSqlDataSource
我有一个绑定到 SqlToLinqDataSource 的 GridView。在我们的软件中,实体不会被物理删除,我们只将列“deletedFlag”设置为 true。
现在我想进入 DataSource 的删除事件并尝试通过这种方式进行自定义删除:
protected void LinqServerModeDataSourceNEU_Deleting(object sender, DevExpress.Data.Linq.LinqServerModeDataSourceEditEventArgs e)
{
if(Verband.verbandKuerzel.ToLower() == "wsv")
{
using (wsv.wsv2DataContext context = new wsv.wsv2DataContext())
{
foreach ( DictionaryEntry item in e.Keys)
{
wsv.mitgliedschaft temp = (wsv.mitgliedschaft)context.mitgliedschaft.Where(x => x.id == int.Parse(item.Value.ToString()));
temp.deletedFlag = 1;
}
context.SubmitChanges();
}
}
else if(Verband.verbandKuerzel.ToLower() == "wsb")
{
using (wsb.wsb2DataContext context = new wsb.wsb2DataContext())
{
foreach (DictionaryEntry item in e.Keys)
{
wsb.mitgliedschaft temp = (wsb.mitgliedschaft)context.mitgliedschaft.Where(x => x.id == int.Parse(item.Value.ToString()));
temp.deletedFlag = 1;
}
context.SubmitChanges();
}
}
}
但是我收到这个错误:
Das Objekt des Typs "System.Data.Linq.DataQuery`1[WebApplication_NEON.wsb.mitgliedschaft]" kann nicht in Typ "WebApplication_NEON.wsb.mitgliedschaft" umgewandelt werden.
谁能帮我看看我做错了什么?
IEnumerable.Where() 方法 returns 一个 IEnumerable<T>
对象(对象的集合)。
在您的情况下,您得到的是 IEnumerable<WebApplication_NEON.wsb.mitgliedschaft>
的实例,它没有 属性 deltedFlag
,而不是 WebApplication_NEON.wsb.mitgliedschaft
.[=18= 的实例]
您需要单独访问数据库中的每一行 -> 将 Where
更改为 Single
。
protected void LinqServerModeDataSourceNEU_Deleting(object sender, DevExpress.Data.Linq.LinqServerModeDataSourceEditEventArgs e)
{
if(Verband.verbandKuerzel.ToLower() == "wsv")
{
using (wsv.wsv2DataContext context = new wsv.wsv2DataContext())
{
foreach ( DictionaryEntry item in e.Keys)
{
/* vvvvv line bellow vvvvv */
wsv.mitgliedschaft temp = (wsv.mitgliedschaft)context.mitgliedschaft.Single(x => x.id == int.Parse(item.Value.ToString()));
temp.deletedFlag = 1;
}
context.SubmitChanges();
}
}
else if(Verband.verbandKuerzel.ToLower() == "wsb")
{
using (wsb.wsb2DataContext context = new wsb.wsb2DataContext())
{
foreach (DictionaryEntry item in e.Keys)
{
/* vvvvv line bellow vvvvv */]
wsb.mitgliedschaft temp = (wsb.mitgliedschaft)context.mitgliedschaft.Single(x => x.id == int.Parse(item.Value.ToString()));
temp.deletedFlag = 1;
}
context.SubmitChanges();
}
}
}
我有一个绑定到 SqlToLinqDataSource 的 GridView。在我们的软件中,实体不会被物理删除,我们只将列“deletedFlag”设置为 true。
现在我想进入 DataSource 的删除事件并尝试通过这种方式进行自定义删除:
protected void LinqServerModeDataSourceNEU_Deleting(object sender, DevExpress.Data.Linq.LinqServerModeDataSourceEditEventArgs e)
{
if(Verband.verbandKuerzel.ToLower() == "wsv")
{
using (wsv.wsv2DataContext context = new wsv.wsv2DataContext())
{
foreach ( DictionaryEntry item in e.Keys)
{
wsv.mitgliedschaft temp = (wsv.mitgliedschaft)context.mitgliedschaft.Where(x => x.id == int.Parse(item.Value.ToString()));
temp.deletedFlag = 1;
}
context.SubmitChanges();
}
}
else if(Verband.verbandKuerzel.ToLower() == "wsb")
{
using (wsb.wsb2DataContext context = new wsb.wsb2DataContext())
{
foreach (DictionaryEntry item in e.Keys)
{
wsb.mitgliedschaft temp = (wsb.mitgliedschaft)context.mitgliedschaft.Where(x => x.id == int.Parse(item.Value.ToString()));
temp.deletedFlag = 1;
}
context.SubmitChanges();
}
}
}
但是我收到这个错误:
Das Objekt des Typs "System.Data.Linq.DataQuery`1[WebApplication_NEON.wsb.mitgliedschaft]" kann nicht in Typ "WebApplication_NEON.wsb.mitgliedschaft" umgewandelt werden.
谁能帮我看看我做错了什么?
IEnumerable.Where() 方法 returns 一个 IEnumerable<T>
对象(对象的集合)。
在您的情况下,您得到的是 IEnumerable<WebApplication_NEON.wsb.mitgliedschaft>
的实例,它没有 属性 deltedFlag
,而不是 WebApplication_NEON.wsb.mitgliedschaft
.[=18= 的实例]
您需要单独访问数据库中的每一行 -> 将 Where
更改为 Single
。
protected void LinqServerModeDataSourceNEU_Deleting(object sender, DevExpress.Data.Linq.LinqServerModeDataSourceEditEventArgs e)
{
if(Verband.verbandKuerzel.ToLower() == "wsv")
{
using (wsv.wsv2DataContext context = new wsv.wsv2DataContext())
{
foreach ( DictionaryEntry item in e.Keys)
{
/* vvvvv line bellow vvvvv */
wsv.mitgliedschaft temp = (wsv.mitgliedschaft)context.mitgliedschaft.Single(x => x.id == int.Parse(item.Value.ToString()));
temp.deletedFlag = 1;
}
context.SubmitChanges();
}
}
else if(Verband.verbandKuerzel.ToLower() == "wsb")
{
using (wsb.wsb2DataContext context = new wsb.wsb2DataContext())
{
foreach (DictionaryEntry item in e.Keys)
{
/* vvvvv line bellow vvvvv */]
wsb.mitgliedschaft temp = (wsb.mitgliedschaft)context.mitgliedschaft.Single(x => x.id == int.Parse(item.Value.ToString()));
temp.deletedFlag = 1;
}
context.SubmitChanges();
}
}
}