2011-06-07 111 views
0

我有一个类T与一个交叉引用表的关联。我想在这个类上有一个方法,它通过接收一个代表对方的实体向交叉引用添加一个条目。但出于某种原因,虽然我可以将该项添加到集合中,但它不会被添加到数据上下文的更改集中。Linq没有坚持添加列表?

所以有关类别的样子:

class T 
{ 
    public EntitySet<T_U> t_users 
    { 
     get 
     { 
      if ((this.serializing && (this.t_user.HasLoadedOrAssignedValues == false))) 
      { 
       return null; 
      } 
     return this.t_user; 
     } 
     set 
     { 
      this.Users.Assign(value); 
     } 
    } 

    public AddUser(U user) 
    { 
     this.t_users.Add(new T_U() { TID = this.ID, UID = user.ID); 
    } 
} 

使用这个类基本上会做类似的客户端:

var db = new DBDataContext(); 
var t = db.Ts.FirstOrDefault(t => t.ID = 100); 
var u = db.Us.FirstOrDefault(u => u.ID == 3); 

t.AddUser(u); 

db.SubmitChanges(); 

难道不应该成功地将记录添加到交叉引用表?

回答

0

我想你想要InsertOnSubmit而不是添加。你使用过时的版本的LINQ到SQL?

+0

虽然我没有插入表格,但我正在向另一个对象上的集合中添加数据。 – CodeRedick 2011-06-08 00:25:09

0

您正在添加新的T_U this.Users ...这是否工作?这不是错误的类型吗?

this.Users.Add(new T_U() { TID = this.ID, UID = user.ID); 
+0

这更像是一个错字...它应该是this.t_users.Add(...) – CodeRedick 2011-06-08 14:23:34