如何在Linq-To-Sql类中创建可选关联?

时间:2008-12-10 03:49:38

标签: database linq linq-to-sql

我正在尝试在几个表之间创建可选关联。我有一个名为Invoice的表。 Invoice表通过CustomerId字段具有对Customer表的FK引用。 Invoice表还具有通过ProjectId字段对项目强制执行的FK引用。

是否有设置我的Linq-To-Sql类以在Invoice和Project表之间建立可选关联?

我希望能够通过此协会选择项目名称(如果有的话)。

澄清

是否可以在dbml文件中进行设置?我有一个扩展Invoice实体的部分类,并希望能够创建一个名为ProjectName的属性来包装Invoice.Project.Name。

只是想知道这是否可行,或者我是否必须在查询中返回左连接值。

2 个答案:

答案 0 :(得分:0)

这应该这样做(VB语法):

Dim results = _
    From i in context.Invoice _
    Join c in context.Customer On i.CustomerId Equals c.CustomerId _
    Group Join p in context.Project On i.ProjectId Equals p.ProjectId Into g = Group _
    Select i.InvoiceName, c.CustomerName, ProjectName = (From x In g Select x.Name).SingleOrDefault

答案 1 :(得分:0)

我想我想出来了......这比我想象的要简单得多。我只需检查部分类中的关系是否为null,这扩展了LinqToSql类。

类似的东西:

   public string ModifiedByName
    {
        get
        {
            if (this.ModifiedByUser == null)
                return string.Empty;
            else
                return this.ModifiedByUser.FirstName + " " + this.ModifiedByUser.LastName;
        }
    }

    public string CreatedByName
    {
        get
        {
            if (this.CreatedByUser == null)
                return string.Empty;
            else
                return this.CreatedByUser.FirstName + " " + this.CreatedByUser.LastName;
        }
    }