2012-11-17 78 views
1

对不起。想不到更好的标题。这是我的困境。我下面的SQL表:Linq to SQL多个外键到相同的主键 - visual studio intellisense

create table MainTable (UserId,somefields); 
create table SecondaryTable(pkid, somefields, UserId,CreatedBy,UpdatedBy); 

用户ID,CreatedBy,UpdatedBy外键引用MainTable(用户ID)。 现在我的LINQ查询的一部分,我经常(错误地)做这样的事情

dbContext.SecondaryTable.Where(r=>r.MainTable.someOtherChainingHere) 

问题是,我总是假设(错误地)的LINQ会自动选择可能的领域中的最佳匹配。由于UserId是通用字段,我认为它会引用它。但事实并非如此。我似乎按字母顺序排列。意思,在Visual Studio智能感知当我

dbContext.SecondaryTable.Where(r=>r. 

我看到MainTable,MainTable1,MainTable2作为我的可能选项。 我怎么会知道这三个中选择正确的一个?我很抱歉,如果我不是更清楚。

回答

0

如何我所做的就是通过使用部分类中增加“程序员友好名称”是这样的:

public partial class secondarytable 
    { 

     public maintable createdByUser{ 
      get 
      { 
       return this._maintable1.Entity; 
      } 
      set 
      { 
       this._maintable1= value; 
      } 
     } 

诸如此类的剩余引用。

我选择不对DBML进行任何手动更改,因此我总是可以从头开始重新创建它。

你只需要小心,当你改变DBML和外键定义时,1,2,3仍然引用右表。

很好的问题btw。我很好奇看到更好的选择!

+0

谢谢。我希望为intellisense更换配置文件,这会奇迹般地处理这种事情,所以我错了。 我想另一个(显而易见的)选项会更明确地重写我的查询,并避免混淆。 – Brian