1

对不起。想不出更好的标题。这是我的困境。我的sql表如下:

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

UserId、CreatedBy、UpdatedBy 是引用 MainTable(UserId) 的外键。现在作为我的 linq 查询的一部分,我经常(错误地)做类似的事情

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

关键是,我总是(错误地)假设 Linq 会自动在可能的字段中选择最佳匹配。由于 UserId 是公共字段,我认为它会引用它。但事实并非如此。我似乎是按字母顺序排列的。意思是,当我在 Visual Studio Intellisense 中

dbContext.SecondaryTable.Where(r=>r.

我认为 MainTable,MainTable1,MainTable2 是我可能的选择。我怎么知道在这三个中选择正确的一个????如果我没有表达得更清楚,我很抱歉。

4

1 回答 1

0

我的做法是使用部分类添加“程序员友好名称”,如下所示:

public partial class secondarytable
    {

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

其余的参考文献等等。

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

您只需要注意,当您更改 DBML 和外键定义时,1、2、3 仍然引用正确的表。

顺便说一句,好问题。我很想看到更好的选择!

于 2012-11-17T07:40:11.900 回答