【发布时间】:2015-08-27 12:56:21
【问题描述】:
我有这个实体:
public class MyDTO
{
int id;
public int Id
{
get { return id; }
set { id = value; }
}
DateTime createdOn;
public DateTime CreatedOn
{
get { return createdOn; }
set { createdOn = value; }
}
DateTime modifiedOn;
public DateTime ModifiedOn
{
get { return modifiedOn; }
set { modifiedOn = value; }
}
int duration;
public int Duration
{
get { return ((TimeSpan)(ModifiedOn - CreatedOn)).Days; }
protected set { }
}
}
那个Duration是计算属性,也是这个映射文件:
internal partial class MyDTO_Mapping : EntityTypeConfiguration<MyDTO>
{
public MyDTO_Mapping()
{
this.HasKey(t => t.Id);
this.ToTable("MyDTO");
this.Property(t => t.Id);
this.Property(t => t.CreatedOn).HasColumnName("CreatedOn");
this.Property(t => t.ModifiedOn).HasColumnName("ModifiedOn");
this.Ignore(t => t.Duration);
}
}
但是当我想对该实体进行查询时(我在 where 子句中使用了Duration),我得到了这个错误:
LINQ to 不支持指定的类型成员“持续时间” 实体。只有初始化器、实体成员和实体导航 支持属性。
我的错误在哪里?
【问题讨论】:
-
在按该属性过滤之前尝试实现(例如调用
ToList())。 -
@Giedrius 是完全正确的,你应该把这个写成答案
标签: c# entity-framework ef-code-first