在我的项目中,许多表通过 ApplicationId 外键链接到 aspnet_Application 表。我不希望用户查看或编辑它,所以我正在寻找在执行插入查询之前预设此 sql 表字段值的方法。我仍然为此列启用了脚手架(以便 DD 生成正确的 sql 脚本),但我在所有编辑/列表/插入页面中隐藏了此列/字段。
理想情况下,我正在为我的 LinqToSql 类中的任何表执行 DynamicInsert 之前寻找一个注入代码的地方。
谢谢
在我的项目中,许多表通过 ApplicationId 外键链接到 aspnet_Application 表。我不希望用户查看或编辑它,所以我正在寻找在执行插入查询之前预设此 sql 表字段值的方法。我仍然为此列启用了脚手架(以便 DD 生成正确的 sql 脚本),但我在所有编辑/列表/插入页面中隐藏了此列/字段。
理想情况下,我正在为我的 LinqToSql 类中的任何表执行 DynamicInsert 之前寻找一个注入代码的地方。
谢谢
因此,经过一番挖掘,我想出了一个可以接受的解决方案。我为我的数据上下文创建了一个部分类,并为每个链接到aspnet_Applications的表添加了一个部分Insert_方法。在每种方法中,我都将ApplicationId字段设置为当前应用程序 ID。
它看起来像这样:
public partial class MyDataContext
{
partial void InsertMyTable(MyTable instance)
{
instance.ApplicationId = HttpContext.Current.Session["ApplicationId"] as Guid?;
this.ExecuteDynamicInsert(instance);
}
}
请注意,在此方法中您不能执行其他 LINQ 语句。特别是我必须将应用程序 ID 存储在会话中,而不是查询aspnet_Applications表。
虽然这是可以接受的解决方案,但它并不完美(大量重复的代码),所以如果有人知道更好,请在这里给我一个骨头:)
将来最好的解决方案是使用刚刚在 MIX09 发布的 .Net RIA 服务预览版的 DomainService 部分,请参阅此处的视频:
.NET RIA 服务 - 使用 Microsoft Silverlight 和 Microsoft ASP.NET 构建数据驱动的应用程序
Microsoft ASP.NET 4.0 数据访问:Web 表单的成功模式
第一个是从 Silverlight 的角度对 .net RIA 服务的介绍,但它更多地应用于 DD,第二个是 David Ebbo 在 MIX 上的演示,展示了 DomainService 如何与 DD 一起工作我认为这是前进的方向,因为你可以做DomainService 中的所有业务逻辑。