Lambda 表达式返回两个外键的值并将它们传递给视图 (MVC)
Lambda expression returning values for two foreign keys and passing them to view (MVC)
我有两个表:
Language (
int LangId,
string LangName
)
Dictionary (
int DictId,
string DictName,
int LangFromFK,
int LangToFK
)
我想要 return 名称以 'a' 开头的词典(这很简单)但是我想要的不是外键的 int
值而是适当语言的名称。我想发送这样的列表以供查看- view
我应该有什么样的 @model
?
我该怎么做?
你想做的事是可能的。外键通常与另一个 table 的主键关联。通常主键是一个自动递增的 int 列。但是,只要具有唯一约束,外键就可以链接到任何列。
A foreign key constraint does not have to be linked only to a primary
key constraint in another table; it can also be defined to reference
the columns of a UNIQUE constraint in another table.
引用自Create Foreign Key Relationships - MSDN
因此,为了在 LangName
上放置外键,您必须在数据库中的该列上应用唯一约束。为此,最佳答案将来自 .NET 文档。 DataColumn.Unique Property 是一个很好的起点。
这是你想要的吗?
var query =
from d in dictionaries
where d.DictName.StartsWith("a")
join fl in languages on d.LangFromFK equals fl.LangId
join tl in languages on d.LangToFK equals tl.LangId
select new
{
d.DictId,
d.DictName,
LangFrom = fl.LangName,
LangTo = tl.LangName,
};
我有两个表:
Language (
int LangId,
string LangName
)
Dictionary (
int DictId,
string DictName,
int LangFromFK,
int LangToFK
)
我想要 return 名称以 'a' 开头的词典(这很简单)但是我想要的不是外键的 int
值而是适当语言的名称。我想发送这样的列表以供查看- view
我应该有什么样的 @model
?
我该怎么做?
你想做的事是可能的。外键通常与另一个 table 的主键关联。通常主键是一个自动递增的 int 列。但是,只要具有唯一约束,外键就可以链接到任何列。
A foreign key constraint does not have to be linked only to a primary key constraint in another table; it can also be defined to reference the columns of a UNIQUE constraint in another table.
引用自Create Foreign Key Relationships - MSDN
因此,为了在 LangName
上放置外键,您必须在数据库中的该列上应用唯一约束。为此,最佳答案将来自 .NET 文档。 DataColumn.Unique Property 是一个很好的起点。
这是你想要的吗?
var query =
from d in dictionaries
where d.DictName.StartsWith("a")
join fl in languages on d.LangFromFK equals fl.LangId
join tl in languages on d.LangToFK equals tl.LangId
select new
{
d.DictId,
d.DictName,
LangFrom = fl.LangName,
LangTo = tl.LangName,
};