我开始使用LINQ,据我所知,为了使用连接查询,我需要手动创建返回类,它将包含我加入的两个或多个表的混合值。
我的问题是,是否有人知道有助于自动创建这些连接类的工具。当桌子太大时手工做是一项繁重的任务,对于维护人员来说,我觉得这也非常烦人。
提前致谢。
编辑:我需要能够使用强数据类型的类,因此在VS中使用intellisense,我对LINQ查询本身没有任何问题,只返回连接类。我来自“DataSets世界”,我的连接查询自动创建相应的DataTable。
现在我使用ASP.NET MVC,所以我的方法返回一个IEnumerable<>稍后将作为模型对象传递给View的类型,例如:
public IEnumerable<MyJoinClass> GetData(int clientID)
{
var query =
from t1 in objDataContext.table1
join t2 in objDataContext.table2 on
new { t1.clientID } equals new { t2.clientID }
where t1.clientID == clientID
select new MyJoinClass()
{
//here the fields I want to retrieve...
column1_From_Table1 = t1.column1,
column2_From_Table1 = t1.column2,
//etc...
};
//Return result
return query;
}
public class MyJoinClass
{
public short column1_From_Table1;
public string column2_From_Table1;
public short? column3_From_Table1;
public int column1_From_Table2;
public short? column2_From_Table2;
public string column3_From_Table2;
//lets imagine 50 columns... do I need to do all this stuff on my own?
}
答案 0 :(得分:1)
没有这样的工具AFAIK,因为没有理由写一个。你真的总想要从连接表中返回所有字段吗?不太可能。
您可能正在做的是内部联接,以过滤掉记录并在链接表上添加约束。从数据库中获取所有列可能是浪费资源。
您始终可以在数据库中创建视图,如果在代码中手动加入,则可以查询它。
答案 1 :(得分:1)
它被称为“编译器”。如果允许你使用匿名类型,而不需要正式的类定义。
答案 2 :(得分:1)
使用Linqer
使用此工具,您实际上可以编写SQL&amp;该工具将其转换为LINQ构造。