1

我正在使用带有 Linq to Sql 的 Asp.Net 动态数据来创建一个只有 CRUD 操作与之关联的简单站点。

不幸的是,我根本无法更改数据库架构,并且遇到了一个我无法优雅解决的问题。

该数据库有一个中央用户表和一个与访问权限相关的附加表,其中每个用户有 3 行,带有访问类型和位标志,指示他们是否具有权限,例如 UserId、Access Type、Has Access。

要求是在用户详细信息和编辑屏幕中提供复选框以允许选择访问权限。

我可以看到的最大问题是如何实现插入/更新/删除操作以确保两个表在一个事务中都被更改。

到目前为止,我能看到的唯一解决方案是劫持插入/更新/删除事件并手动完成所有操作,但如果是这种情况,我最好用普通的 Asp.Net 网络表单编写页面,而不是尝试使用动态数据.

有人对我可以做的任何其他方式有任何想法吗?

4

1 回答 1

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
    }
}
于 2011-07-12T16:19:09.010 回答