我目前正在使用Asp.Net动态数据,使用Linq to Sql,创建一个只有与之关联的CRUD操作的简单网站。
不幸的是,我根本无法更改数据库模式,并且遇到了一个我无法正常解析的问题。
数据库有一个中央用户表和一个与访问权限相关的附加表,其中每个用户有3行,具有访问类型和位标志,指示它们是否具有权限,例如UserId,访问类型,具有访问权限。
要求是在用户详细信息和附件中提供了复选框。编辑屏幕以允许选择访问权限。
我能看到的最大问题是如何实现插入/更新/删除操作以确保在一个事务中更改两个表。
到目前为止,我能看到的唯一解决方案是劫持插入/更新/删除事件并手动完成所有操作但是如果是这样的情况我可能会更好地在正常的Asp.Net webforms中编写页面而不是尝试使用动态数据。
有没有人对我能做到的任何其他方法有任何想法?
答案 0 :(得分:0)
这是一个不幸的数据库设计。你是对的,你必须拦截数据上下文的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
}
}