【发布时间】:2015-04-23 15:27:56
【问题描述】:
这是sequel of a question I asked before。到目前为止,我试图实施的模式演化问题的策略是缓慢变化的维度。我现在遇到的问题如下。考虑以下数据模型:
class Bar
{
int id;
int param;
double x;
double y;
}
class Foo
{
int id;
int param;
string name;
string description;
collection<Bar> bars;
}
class Delta
{
int id;
int param;
double rating;
}
class RootEntity
{
int id;
int param;
collection<Foo> foos;
collection<Delta> deltas;
}
注意,所有实体都有int param 属性。它具有相同的名称,但不是外键。
这是一个非常简化的模型,仅作为示例。考虑到集合是巨大的,而对象树要复杂得多。在 EntityFramework 技术中
我可以这样做:
class MyDbContext : DbContext
{
public DbSet<RootEntity> rootEntities { get; set; }
}
我想要做的是限制param 的选择。可以如下
dbContext.rootEntities.Where(e => e.param == some_value);
问题是在生成的 SQL 代码中只有 dbContext.rootEntities 会被过滤。其余部分(与 Foo、Bar 和 Delta 的连接)不会被过滤。
因此问题来了:如何将.Where(e => e.param == some_value) 传播到所有连接以进行基础对象选择?
我正在寻找 EntityFramework 或 NHibernate 的解决方案。
谢谢。
【问题讨论】:
标签: c# entity-framework nhibernate orm