图片,我有一个巨大的数据库,存储线程和来自不同数据源的帖子,如两个不同的论坛。对于每个数据源,实体的Id (例如ThreadId、PostId.)是唯一的,但它可能与另一个数据源获取的实体的Id发生冲突。例如,forum1和forum2都可以有一个带有Threadid=1的线程:
我使用Linq2Sql和存储库模式将我的应用程序连接到数据库。我看到在使用ThreadId时应该避免使用复合键(在DatasourceId和Linq2Sql之间)。因此,我猜想代理项主键是我唯一的选择(是吗?):
表线:
int
表员额:
现在,我的问题是: Linq2Sql是否能够映射它生成的类中的posts和线程之间的1:1关系?如果一个帖子有一个Thread.ThreadId的外键,如果有两个实体具有相同的ThreadId (当然是不同的DatasourceIds ),会发生什么?我想这将返回在post上分配的线程集合--我不想要!我是否还可以为每个帖子返回一个线程,即共享同一个DatasourceId的帖子?
发布于 2011-04-08 12:27:23
你说得对,LinqToSql不会知道某个Threadid是独一无二的。可以通过在每个查询中的where子句中包含Datasourceid来实现这一点。
var myThreads = DataContext.Threads.Where(t => t.Datasourceid == 1);https://stackoverflow.com/questions/5594822
复制相似问题