我目前正在使用Asp。. Net动态数据,与Linq to Sql,创建一个简单的网站,只有CRUD操作与它相关联。
不幸的是,我根本无法更改数据库模式,并且遇到了一个问题,我无法优雅地解决这个问题。
数据库有一个中心用户表和一个与访问权限相关的附加表,其中每个用户有3行访问类型和位标志,表明他们是否拥有权限,例如UserId, access type, has access。
要求在用户详细信息&编辑屏幕以允许选择访问权限。
我能看到的最大的问题是如何实现插入/更新/删除操作,以确保在一个事务中修改两个表。
到目前为止,我能看到的唯一解决方案是劫持插入/更新/删除事件,并手动完成这一切,但如果是这种情况下,我可能会更好地写正常Asp的页面。. Net webforms,而不是尝试使用动态数据。
有谁知道我可以用什么方法来做吗?
这是一个不幸的数据库设计。您是对的,您必须拦截数据上下文的SubmitChanges()并在那里进行专门的更新。另一个选择是使用数据库触发器。
public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
{
ChangeSet changeset = GetChangeSet();
foreach (var u in changeset.Deletes.OfType<Users>())
{
// do something to details
}
}