多对多表查询的有关问题
多对多表查询的问题
hi
又是我。
问一个多对多表查询的问题
先上相关代码吧。有精简
这样就生成了三张表
Tasks TaskTag Tag
现在想查某用户下,所有标注了某 TAG 的 task
如果用 SQL 语句写的话是这样的
现在我的项目用的是 EF4.1 + Repository 模式。
我比较笨。只能写出
var q = from c in taskRepository.GetMany(o => o.UserId == uesrId)
join t in tagRepository.GetMany( g => g.TagName == tagName)
这样的代码了。
后面的写不出来了。
请各位高手帮忙看看。后面的代码如何写
------解决方案--------------------
完整例子自己Q我,我发你,昨晚我看见你的信息了,太困了,就睡了
hi
又是我。
问一个多对多表查询的问题
先上相关代码吧。有精简
- C# code
public class Tasks { public Tasks() { this.Tags = new List<Tag>(); } public int TaskId { get; set; } public int UserId { get; set; } public string TaskName {get;set;} public virtual UserInfo UserInfo { get; set; } public virtual ICollection<Tag> Tags { get; set; } } public class Tag { public Tag() { this.Tasks = new List<Tasks>(); } public int TagId { get; set; } public int UserId { get; set; } public string TagName { get; set; } public virtual UserInfo UserInfo { get; set; } public virtual ICollection<Tasks> Tasks { get; set; } } //Mapping // Relationships this.HasMany(t => t.Tags) .WithMany(t => t.Tasks) .Map(m => { m.ToTable("TaskTag"); m.MapLeftKey("TaskId"); m.MapRightKey("TagId"); });
这样就生成了三张表
Tasks TaskTag Tag
现在想查某用户下,所有标注了某 TAG 的 task
如果用 SQL 语句写的话是这样的
- SQL code
select tasks.* from tasks left join tasktag on tasks.taskid = tasktag.taskid left join tag on tag.tagid = TaskTag.tagid where tag.tagname='test'
现在我的项目用的是 EF4.1 + Repository 模式。
我比较笨。只能写出
var q = from c in taskRepository.GetMany(o => o.UserId == uesrId)
join t in tagRepository.GetMany( g => g.TagName == tagName)
这样的代码了。
后面的写不出来了。
请各位高手帮忙看看。后面的代码如何写
------解决方案--------------------
完整例子自己Q我,我发你,昨晚我看见你的信息了,太困了,就睡了