entity-framework-4.1

entity framework 4.1 - relación unidireccional de muchos a muchos con Code First Entity Framework



entity-framework-4.1 (1)

Utilizar esta:

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; } }

Y mapearlo con:

modelBuilder.Entity<User>() .HasMany(r => r.TaggedCustomers) .WithMany() // No navigation property here .Map(m => { m.MapLeftKey("UserId"); m.MapRightKey("CustomerId"); m.ToTable("BridgeTableForCustomerAndUser"); });

Soy nuevo en EF, y estoy tratando de obtener una relación unidireccional de muchos a muchos con el enfoque del código primero. Por ejemplo, si tengo dos clases siguientes (no mi modelo real) con una relación N * N entre ellas, pero ninguna propiedad de navegación del lado del "Cliente".

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; } }

El código de mapeo se parece a ...

modelBuilder.Entity() .HasMany(r => r.TaggedCustomers) .WithMany(c => c.ANavgiationPropertyWhichIDontWant) .Map(m => { m.MapLeftKey("UserId"); m.MapRightKey("CustomerId"); m.ToTable("BridgeTableForCustomerAndUser"); });

Esta sintaxis me obliga a tener "WithMany" para la entidad "Cliente". La siguiente url dice: "Por convención, Code First siempre interpreta una relación unidireccional como uno a muchos".

¿Es posible anularlo o debo usar algún otro enfoque?