首页 新闻 会员 周边 捐助

Linq to sql 历史性难题

0
悬赏园豆:60 [已关闭问题]

我的Linq to sql里有个实体Category,含有属性Nullable<int> ParentId
我让Category实现一个接口IHaveParent
代码如下:

public interface IHaveParent
{
Nullable
<int> ParentId
{
get;
set;
}
}

public partial class Category : IHaveParent
{}

 


我使用如下代码:GetAll().Where(it=>it.ParentId==null)就出异常,如果把IHaveParent去掉则正常。
代码
public class TestRepository<TEntity> : RepositoryBase<TEntity>
where TEntity : class, IHaveParent
{
public void Test()
{
var items
= GetAll().Where(it => it.ParentId == null);
// 这里会出现异常,base {System.SystemException} = {"不支持接口成员 IHaveParent.ParentId 的映射。"} 
}
}

public class TestRepositoryFixture
{
[Fact]
public void Test()
{
TestService
<Category> testService = new TestService<Category>();
testService.Test();
}
}

 


实在搞不定,帮帮忙啊。分全给了

问题补充: 刚试了用 GetAll().Where(it=>it.ParentId.Value == null); 可以。。。是Nullable无法翻译过去,可是直接不用接口的都可以翻译过去。
a-peng的主页 a-peng | 初学一级 | 园豆:28
提问于:2010-01-29 23:55
< >
分享
其他回答(4)
0

感觉你这个接口没有必要

查尔斯 | 园豆:3832 (老鸟四级) | 2010-01-30 01:18
我需要用ParentId var items = GetAll().Where(it => it.ParentId == null); 所以接口里必须定义ParentId保证传入的实体含有ParentId属性
支持(0) 反对(0) a-peng | 园豆:28 (初学一级) | 2010-01-30 10:35
0

看不懂你代码,GetAll 是啥来的?

在接口的 ParentID 上加上Column  Attribute:

[Column.....]

ParentID{get;set;}

麦舒 | 园豆:452 (菜鸟二级) | 2010-01-30 09:22
GetAll()就相当于dataContext.Category 返回该表的所有数据。
支持(0) 反对(0) a-peng | 园豆:28 (初学一级) | 2010-01-30 10:37
0

ParentId有映射到数据列上吗?

Gray Zhang | 园豆:17610 (专家六级) | 2010-01-30 13:57
恩,有,第一次碰到这种情况,所以有点奇怪。
支持(0) 反对(0) a-peng | 园豆:28 (初学一级) | 2010-01-30 17:58
0

 GetAll().Where(it =>! it.ParentId.HasValue);

岳小云 | 园豆:205 (菜鸟二级) | 2010-01-30 14:22
0

Nullable
<int> ParentId
{
get;
set;
}


改成

int? ParentId
{
get;
set;
}


试下

晨牧 | 园豆:215 (菜鸟二级) | 2010-02-10 10:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册