I've been trying to learn EF codefirst. One of the first things is that it won't enforce unique... So... I've tried to solve the problem by exposing a readonly IEnumerble property that forces me to use the AddProp method if I want to add anything to the collection...
When I try to do this (and this is just a "Throw Away" example below) I get the error.
Error 1 The type arguments for method 'System.Data.Entity.ModelConfiguration.EntityTypeConfiguration.HasMany(System.Linq.Expressions.Expression>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly. C:\Users\User\Documents\Visual Studio 2010\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs 39 9 ConsoleApplication3
any reason why?
class Program
{
  static void Main(string[] args)
  {
    using (DC _db = new DC())
    {
      PrimeA p = new PrimeA { Name = "BlahGEEEER" };
      p.AddProp(new Prop { comment = "Blah HI!" });
      p.AddProp(new Prop { comment = "Blah HI!" });
      Console.ReadLine();
      _db.PrimeAs.Add(p);
      _db.SaveChanges();
    }
  }
}
public class DC : DbContext
{
  public DbSet<PrimeA> PrimeAs { get; set; }
  public DbSet<PrimeB> PrimeBs { get; set; }
  public DbSet<Prop> Props { get; set; }
  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    modelBuilder.Entity<PrimeA>()
      .HasMany(p => p.Props)  // <---- FAILS HERE
      .WithMany();
    base.OnModelCreating(modelBuilder);
  }
}
public class PrimeA
{
  private List<Prop> m_Props = new List<Prop>();
  public int PrimeAID { get; set; }
  public string Name { get; set; }
  public virtual IEnumerable<Prop> Props
  {
    get 
    {
      return m_Props;
    }
  }
  public bool AddProp(Prop prop)
  {
    bool ret = false;
    var existingResult =
      from p in m_Props
      where p.comment.ToLower() == prop.comment.ToLower()
      select p;
    if (existingResult.Count() == 0)
    {
      m_Props.Add(prop);
      ret = true;
    }
    return ret;
  }
}
 
     
     
     
    