c# – 使用Linq2Sql使用自动递增的主键将数据插入多个表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 使用Linq2Sql使用自动递增的主键将数据插入多个表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1513字,纯文字阅读大概需要3分钟。
内容图文
![c# – 使用Linq2Sql使用自动递增的主键将数据插入多个表](/upload/InfoBanner/zyjiaocheng/905/a374997f641f4e24b14344f14ac0e7cd.jpg)
我有一个Customer表,其中包含一个主键(int auto increment)和一个带有Customer表外键的Address表.我试图在一个不错的事务中将两行插入数据库.
using (DatabaseDataContext db = new DatabaseDataContext())
{
Customer newCustomer = new Customer()
{
Email = customer.Email
};
Address b = new Address()
{
CustomerID = newCustomer.CustomerID,
Address1 = billingAddress.Address1
};
db.Customers.InsertOnSubmit(newCustomer);
db.Addresses.InsertOnSubmit(b);
db.SubmitChanges();
}
当我运行这个时,我希望Customer和Address表自动在数据库中拥有正确的密钥,因为上下文知道这是一个自动递增的密钥,并且将在两个表中使用右键进行两次插入.
我可以让它工作的唯一方法是首先在Customer对象上执行SubmitChanges()然后创建地址并对其执行SubmitChanges().这将创建两个到数据库的往返,我想看看我是否可以在一个事务中执行此操作.可能吗?
谢谢
解决方法:
克劳斯基本上已经指定了你需要做的事 – 试试这段代码:
using (DatabaseDataContext db = new DatabaseDataContext())
{
Customer newCustomer = new Customer()
{
Email = customer.Email
};
Address b = new Address()
{
Address1 = billingAddress.Address1
};
newCustomer.Address = b;
db.Customers.InsertOnSubmit(newCustomer);
db.SubmitChanges();
}
如果将地址b与您刚创建的客户关联,然后将该客户插入db.Customers集合,则调用db.SubmitChanges()应自动保存地址,保存客户并修复任何IDENTITY列使这项工作.在测试用例中,它确实适用于我.
您尚不能使用地址’或客户的ID – 尚未设置的地址.但是你绝对可以将完整的对象相互关联,从而获得两者之间的“连接”.
为此,您需要确保在DBML设计器中,在两个ID列的“属性”窗口中,“自动生成的值”为True,“自动同步”为“OnInsert”(两者都不是默认值) .
内容总结
以上是互联网集市为您收集整理的c# – 使用Linq2Sql使用自动递增的主键将数据插入多个表全部内容,希望文章能够帮你解决c# – 使用Linq2Sql使用自动递增的主键将数据插入多个表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。