我对EF没有什么问题,我不知道如何解释它,所以我举一个例子:
这是我的对象:
public class User
{
public int UserId { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
// Need model builder example for this one
public virtual ICollection<Event> Events { get; set; }
}
public class Tag
{
public int TagId { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
public virtual ICollection<Event> Events { get; set; }
}
public class Event
{
public int EventId { get; set; }
public int TagId { get; set; }
public virtual Tag Tag { get; set; }
}
是否可以通过“Event.Tag.User”延迟加载/映射虚拟ICollection'User.Events'而不更改任何数据库表?
2014年3月7日
以下是SLQ子句的示例,其中UserId为1的用户:
SELECT Events.EventId
FROM Events
INNER JOIN Tags ON Tags.TagId = Events.TagId
INNER JOIN Users ON Users.UserId = Tags.UserId
WHERE Users.UserId = 1
我不确定,但我看起来像是:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().HasMany(user => user.Events).WithMany(...
}
答案 0 :(得分:0)
是。只要不处理您的上下文,您访问的任何虚拟属性都将再次访问数据库。如果您遇到特定问题,可能会发布错误消息。我现在看到你的代码没有任何问题。