Aja*_*ale 21 entity-framework-4.1
我是EF的新手,并试图通过代码优先方法获得多对多的单向关系.例如,如果我有两个类(不是我的真实模型),它们之间是N*N关系,但没有来自"Customer"方面的导航属性.
public class User {
public int UserId { get; set; }
public string Email { get; set; }
public ICollection TaggedCustomers { get; set; }
}
public class Customer {
public int CustomerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}Run Code Online (Sandbox Code Playgroud)
映射代码看起来像......
modelBuilder.Entity()
.HasMany(r => r.TaggedCustomers)
.WithMany(c => c.ANavgiationPropertyWhichIDontWant)
.Map(m =>
{
m.MapLeftKey("UserId");
m.MapRightKey("CustomerId");
m.ToTable("BridgeTableForCustomerAndUser");
});Run Code Online (Sandbox Code Playgroud)
这种语法迫使我对"Customer"实体使用"WithMany".以下网址是"按照惯例,Code First总是将单向关系解释为一对多".
是否可以覆盖它,或者我应该使用任何其他方法?
Lad*_*nka 37
用这个:
public class User {
public int UserId { get; set; }
public string Email { get; set; }
// You must use generic collection
public virtual ICollection<Customer> TaggedCustomers { get; set; }
}
public class Customer {
public int CustomerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并将其映射为:
modelBuilder.Entity<User>()
.HasMany(r => r.TaggedCustomers)
.WithMany() // No navigation property here
.Map(m =>
{
m.MapLeftKey("UserId");
m.MapRightKey("CustomerId");
m.ToTable("BridgeTableForCustomerAndUser");
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3381 次 |
| 最近记录: |