Dav*_*enn 3 linq linq-to-entities entity-framework-4
我正在使用Entity Framework 4 CTP5 Code First,我有一个模型:
public class User {
public int UserId { get; set; }
public string Email { get; set; }
public ICollection<Customer> TaggedCustomers { get; set; }
}
public class Customer {
public int CustomerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public ICollection<User> TaggedBy { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
用户可以"标记"客户并且许多用户可以"标记"客户,存在多对多的关系.我有一个工作的DbContext,我可以使用查询客户
var customers = DbContext.Customers.Include(c => c.TaggedBy);
Run Code Online (Sandbox Code Playgroud)
但每个客户都会拥有标记客户的所有用户.如何将TaggedBy集合限制为仅使用指定的UserId结果?
我已经尝试过,DbContext.Customers.Include(c => c.TaggedBy.Select(x => x.Id == userId));但是会引发错误.
小智 6
EF Feature CTP5:Fluent API示例 - ADO.NET团队博客 - 站点主页 - MSDN博客
modelBuilder.Entity<Product>()
.HasMany(p => p.Tags)
.WithMany(t => t.Products)
.Map(m =>
{
m.MapLeftKey(p => p.ProductId, "CustomFkToProductId");
m.MapRightKey(t => t.TagId, "CustomFkToTagId");
});
Run Code Online (Sandbox Code Playgroud)
代码优先映射CTP5中的变化 - ADO.NET团队博客 - 站点主页 - MSDN博客
modelBuilder.Entity<Product>()
.HasMany(p => p.SoldAt)
.WithMany(s => s.Products)
.Map(mc => {
mc.ToTable("ProductsAtStores");
mc.MapLeftKey(p => p.Id, "ProductId");
mc.MapRightKey(s => s.Id, "StoreId");
});
Run Code Online (Sandbox Code Playgroud)