我有一个包含表格Users
和Uploads
. 重要的列是:
Users -> UserID
Uploads -> UploadID, UserID
关系中的主键是Users -> UserID
,外键是Uploads -> UserID
。
在LINQ to SQL
中,我做了以下操作:
Retrieve files
var upload = new Upload();
upload.UserID = user.UserID;
upload.UploadID = XXX;
db.Uploads.InsertOnSubmit(upload)
db.SubmitChanges();
如果我这样做并重新运行应用程序(db
当然,对象是重新构建的) - 如果执行以下操作:
foreach(var upload in user.Uploads)
我使用该用户的 ID 获取所有上传。(就像在前面的例子中添加的那样)
问题是,我的应用程序在添加上传和提交更改后,不会更新user.Uploads
集合。即 - 我没有收到新添加的上传。
user
对象存储在对象中Session
。起初,我虽然LINQ to SQL Framework
不会更新对象的引用,因此我应该简单地user
从新SQL
请求中“重置”对象。我的意思是:
Session["user"] = db.Users.Where(u => u.UserID == user.UserID).SingleOrDefault();
(以前的用户在哪里user
)
但这没有帮助。
请注意:重新运行应用程序后,user.Uploads
确实有新的上传!
有没有人遇到过这种类型的问题,或者这是正常行为?我是这个框架的新手。我很乐意接受任何建议。
谢谢!
PS我在另一种方法中有DB.Uploads.Count()
一行,添加上传后确实增加了。
编辑:我尝试过的一些事情:
- 我的代码中的第一个方法(初始化)是
db = new new DBDataContext();
.
我在我的第一种方法中添加了db.Dispose; db = new DBDataContext();
afterdb.SubmitChanges();
,只是为了看看它是否有任何作用。它没有。 - 作为一个快速修复,我做到了
user.Uploads.Add(upload);
。它确实添加了适当的对象user.Uploads
,然后在foreach
循环中使用该对象。嗯,呃。但我仍在等待有关此行为的一些解释。谢谢!