说我有两个实体。
public class Category{
public virtual int Id{get;set;}
public virtual IList<Post> Posts{get;set;}
}
public class Post{
public virtual int Id{get;set;}
public virtual string Title{get;set;}
}
在Db中有一个多对多的表
CategoryPostRel
- 类别ID
- 帖子ID
类别地图然后如下所示:
public CategoryMap()
{
HasManyToMany(x => x.Posts)
.Table("CategoryPostRel")
.ParentKeyColumn("CategoryId")
.ChildKeyColumn("PostId");
}
好的,但是说我只想要帖子中的Ids。所以我将我的类别实体更改为这样。
public class Category{
public virtual int Id{get;set;}
public virtual IList<int> PostIds{get;set;}
}
请注意,我根本无法更改数据库,而且多对多表没有唯一标识符。
public CategoryMap()
{
HasManyToMany(x => x.PostIds)
.Table("CategoryPostRel")
.ParentKeyColumn("CategoryId")
.ChildKeyColumn("PostId").HowDoIgetTheIds...?
}
答案 0 :(得分:1)
您可以创建一个模拟此关系CategoryPost
的实体,并执行以下操作:
public CategoryMap()
{
HasMany(x => x.CategoryPostIds)
.KeyColumn("CategoryId")
}
public CategoryPostMap
{
CompositeId()
.KeyProperty(x => x.PostId)
.KeyProperty(x => x.CategoryId)
}
这显然不是一个理想的解决方案,但可能有效。