查询bug

Dec 7, 2010 at 2:42 AM

我用的版本是:3.9

model

[DbTable("Province_Channel"), SoftDelete]
    public abstract class ProvinceChannel : DbObjectModel<ProvinceChannel>
    {
        [Length(50)]
        public abstract string Province { get; set; } 
        public abstract bool IsAll { get; set; }
        public abstract int Level { get; set; }      
        public abstract int State { set; get; }
        [Length(250), AllowNull]
        public abstract string NoCity { get; set; } 
        [HasMany(OrderBy = "Id")]
        public abstract IList<ChannelPB> PBJ { get; set; }
        [Length(50), AllowNull]
        public abstract string Creator { get; set; }
        [SpecialName]
        public abstract DateTime CreatedOn { get; set; }
    }
[DbTable("Channel_PB"), SoftDelete]
    public abstract class ChannelPB : DbObjectModel<ChannelPB>
    {
        [BelongsTo]
        public abstract ProvinceChannel PC { get; set; }
        [Length(20), AllowNull]
        public abstract string Port { get; set; } 
        [Length(10), AllowNull]
        public abstract string KeyA { get; set; }
        [Length(10), AllowNull]
        public abstract string Ysf { get; set; 
        [Length(10), AllowNull]
        public abstract string KeyB { get; set; } 

    }

查询代码:

var dt= Model.ProvinceChannel.FindAll(item => item.Province == p)

执行后报错:

无法将类型为“System.Linq.Expressions.BinaryExpression”的对象强制转换为类型“System.Linq.Expressions.MemberExpression”。

这个问题怎么解决?

还有个问题,我想执行ProvinceChannel.FindAll()后怎么能把其关联的

[HasMany(OrderBy = "Id")]
        public abstract IList<ChannelPB> PBJ { get; set; }
也加载出来,进行缓存。
Coordinator
Dec 7, 2010 at 4:10 AM

1. FindAll 是查找所有的记录,所以,其参数不是Where条件,而是OrderBy。

2.只要访问一次 PBJ 就可以加载并缓存了。不过一般不需要,它会在第一次被使用的时候被加载并缓存。