About Save And Relation And LazyLoad

Jan 29, 2010 at 5:51 AM

众所周知DbEntry在Save之后,关系BelongsTo就读不出来了,我现在的解决办法是:

1)在发明GetForeignKey(“”)之前是

Save之前把需要在Save后用的关系的Id取出来,备用,再用FindById解决。

2)现在是Save之后再用GetForeignKey(“”)取出Id,再用FindById解决。

 

 

老大通常如何处理这个问题?也是再手工FindById?

Relation
Coordinator
Jan 29, 2010 at 7:43 AM
Edited Jan 29, 2010 at 7:44 AM

 

var x1 = x.FindById(1);
x1.Name = "test";
x1.Save();

var x2 = x.FindById(x1.Id);
Console.WriteLine(x2.Master);

 

一般情况下会造成多一次SQL调用,不过FindById在所有数据库中都是速度最快的操作,一般不会造成性能瓶颈,另外,DbEntry内置的缓存也是工作于FindById模式的,所以,即使真的造成了性能瓶颈,只要启用DbEntry缓存,就解决了。

最近也在考虑增强缓存能力,使它也工作于FindById之外的场景,实现上有些麻烦,不过应该可以做。