I have two "Code Only" POCO's using EF4 and the latest CTP, running against an existing, legacy database. Running a LINQ query against PocoA worked until I added the property below to that object, I was trying to add a relationship.
public virtual PocoB pocoB { get; set; }
Once I did that, I started getting the following error:
Multiple object sets per type are not supported. The object sets 'PocoA_DbSet' and 'PocoB_DbSet' can both contain instances of type 'PocoA'.
So I next thought my problem was because I had not defined the relationship, and this legacy database was using a 'fk/pk' prefix instead of an 'Id' suffix on the primary and foreign keys. So I added the following data annotation to the virtual method specified above, with no change in behavior:
[RelatedTo(Property="PocoB", ForeignKey="fkPocoB")]
I'm really at a loss for what needs to be changed to make this work.
This error occurs if your DbContext class exposes multiple DbSet<T> properties where T occurs more than once. Basically it can't figure out which DbSet an instance of type T belongs to.
In code, the error probably looked like this:
public class MyContex : DbContext {
public DbSet<PocoA> PocoA { get; set; }
public DbSet<PocoA> PocoB { get; set; } ...
where that final line should have been DbSet<PocoB> instead of DbSet<PocoA>
TL;DR - you copy-pasted a property and forgot to change the type parameter in the DbSet.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With