在LINQ中使用多个外键到同一个表

Gra*_*eme 7 linq-to-sql

我有一个表用户和一个表项

在Items表中,我有诸如的字段

ModifiedBy CreatedBy AssignedTo

它们都有userId整数.数据库设置为将这些作为外键返回到Users表.

使用LINQToSQL时,从dbml自动构建的关系最终会给我一些名称,如User,User1和User2

例如myItem.User1.Name或myItem.User2.Name

显然,这不是非常易读,我希望它符合这一点

myItem.CreatedByUser.Name或myItem.ModifiedByUser.Name等

我可以更改关系的名称,但这意味着我每次更改db模式并刷新dbml时都必须重做.

这有什么办法吗?

Nei*_* T. 1

简单的回答:不。

有人建议创建定义属性名称的部分关联类,但这也行不通:通过部分类重命名 LINQ 2 SQL 实体属性

您的选择是花一点时间了解有关 LINQ-to-SQL“幕后”的更多信息,以便可以手动进行必要的修改,或者仅通过“属性”窗口更改属性名称。就我个人而言,我只是删除/重新拖动/重命名,因为不正确设置属性对于调试来说是一件痛苦的事情,因为抛出的异常几乎无法让您了解导致它的原因。我什至创建了一个单元测试库,它采用模型中的每个 MetaTable 对象并验证字段计数、每个字段的 ServerDataType 内容、关联计数、每个关联的名称以及每个关联末尾的名称。该协会。每隔几次更改,我都会运行单元测试以确保模型完好无损。