【发布时间】:2018-11-12 17:03:50
【问题描述】:
我有以下型号:
[Table("Experiments")]
public class Experiment
{
...
public virtual ICollection<ExperimentType> ExperimentTypes { get; set; }
public Experiment()
{
ExperimentTypes = new List<ExperimentType>();
}
}
[Table("ExperimentTypes")]
public class ExperimentType
{
...
public virtual ICollection<Experiment> Experiments { get; set; }
public ExperimentType()
{
Experiments = new List<Experiments>();
}
}
DbSet 包含:
public DbSet<Experiment> Experiments { get; set; }
public DbSet<ExperimentType> ExperimentTypes{ get; set; }
这会在 SQL 上创建一个名为 ExperimentExperimentTypes 的表。
现在,我想执行 LINQ 连接,例如:
var query =
from e in database.Experiments
join eet in database.ExperimentExperimentTypes on eet.Experiment_Id equals eet.ExperimentType_Id ...
但显然 database.ExperimentExperimentTypes 在代码中无法识别。
为了告诉代码有这张表,我尝试了很多东西,我也尝试创建了相应的c#类,但没有得到任何结果。
如何做到这一点?
【问题讨论】:
-
只需使用导航属性,它就会创建所有需要的连接。
-
"但显然 database.ExperimentExperimentTypes 在代码中无法识别。";如果表在那里,您可以在代码中定义它。这样就可以访问了。根据您的查询并正确执行,您可以通过这种方式提高性能。
-
(除了我之前的评论):或者按照@juharr 说的做 ;-)
标签: c# linq ef-code-first linq-to-entities code-first