其实就差一步啊,EF硬生生的不支持,日了.
from c in blog_Context join p in blog_PostBody on c.ID equals p.BCID
where c.ID == @ID
select new
{
....
}
这也是种方法,但在我这边采用了领域驱动开发模式,这种解决方法应该不是最佳解决方案。看看是否有更佳解决方案。
@家龙: ORM 的缺点是连表,视图是最佳的方法。
from t1 in blog_Context from t2 in blog_PostBody where t1.ID=t2.BCID &&t1.Id=id(这个id是参数) select new { t1.ID,t1.Title,t1.Description,Body=t2.Text }
这也是种方法,但在我这边采用了领域驱动开发模式,这种解决方法应该不是最佳解决方案。看看是否有更佳解决方案。
@家龙: 不管你是DDD还是TDD,和这个有啥关系呢?
@幻天芒: 你说的是一半是对的。我说这个不是最优方案的原因:
1、select new出来的对象就没法使用EF的.Set<TEntity>().Add(obj)。这个和ddd没关系。
2、ddd要求很多属性是只读的,所以没法保证所有的Entity都能直接new 出来,除非用反射,或其他不简洁的方式。
@家龙: 好吧~!我EF用得不好,直接放弃使用了。现在公司项目用ibatis.net,其他的用Linq语法的Orm。暂时没想到什么跟简洁的方式,呵呵~
这是两个table存一个Entity, 叫做 Entity Splitting.
这篇文章专门讲这个 http://msdn.microsoft.com/en-us/data/jj715646.aspx
我看了,其中有个潜规则:两张表都是PersonId为主键。我要打破这个潜规则。