C# 在插入前保留表中的ID以保持外键约束完好无损
我有一个C# 在插入前保留表中的ID以保持外键约束完好无损,c#,sql,asp.net,database,linq-to-sql,C#,Sql,Asp.net,Database,Linq To Sql,我有一个User表,它有一个自动递增的ID主键字段和一个Name字符串字段 我还有一个Email表,它有一个自动递增的ID主键字段、一个Value字符串字段和一个将电子邮件地址链接到特定用户的User\u ID字段。它是用户表的外键 我的项目要求我开发一个ASP.NET页面,使用Linq to SQL,最终用户必须同时向数据库添加用户和电子邮件 用户创建页面将包含一个用于名称用户字段的文本框,以及一个支持AJAX的网格控件,用于为将要创建的用户插入大量电子邮件地址。它的末尾还将有一个创建按钮 支
User
表,它有一个自动递增的ID
主键字段和一个Name
字符串字段
我还有一个Email
表,它有一个自动递增的ID
主键字段、一个Value
字符串字段和一个将电子邮件地址链接到特定用户的User\u ID
字段。它是用户
表的外键
我的项目要求我开发一个ASP.NET页面,使用Linq to SQL,最终用户必须同时向数据库添加用户和电子邮件
用户创建页面将包含一个用于名称
用户字段的文本框,以及一个支持AJAX的网格控件,用于为将要创建的用户插入大量电子邮件地址。它的末尾还将有一个创建按钮
支持AJAX的网格需要绑定到Linq to SQL表。
这里的问题是,在启用AJAX的网格中为用户创建电子邮件地址时,我还没有有效的用户ID,因为我仍然必须通过按create按钮创建用户记录
我看到了两种可能的解决方案,但它们既不令人满意,也不雅观:
我相信这不是一个罕见的问题。。。有更优雅的解决方案吗?在用户完成创建过程时,在服务器端存储电子邮件地址似乎是白费力气。为什么不在本地存储它们,并在创建用户时将它们与其余数据一起传递呢?(您仍然可以通过AJAX进行验证) 不过,如果您希望将它们存储在服务器上,我建议为创建中的电子邮件地址创建一个单独的表,该表不受外部约束。然后在创建用户时从该表中获取电子邮件地址 采取这种做法的原因:
我可以问你为什么不在电子邮件对象之前创建用户对象吗?在这一点上,您可以在写入之前在电子邮件对象中插入用户IDthem@Steve忘了在问题中提到一些重要的东西:支持AJAX的网格需要绑定到Linq to SQL表。我可以创建一个模仿SQL表模式的自定义数据源,但这似乎是不必要的——必须有更好的解决方案来满足这一需求。因为我会将所有内容保持在会话中,并通过Linq-2-sql或一个简单的存储库一次性创建user+emal地址。您的要求是问题的核心-我真的认为没有必要提出这样的技术要求