I'm receiving the following EF error:
Agent_MailingAddress: : Multiplicity conflicts with the referential constraint in Role 'Agent_MailingAddress_Target' in relationship 'Agent_MailingAddress'. Because all of the properties in the Dependent Role are non-nullable, multiplicity of the Principal Role must be 1
It appears to throw this when it executes
base.OnModelCreating(modelBuilder).
Here are my models. FWIW, Agent
inherits from a User
class.
public class Agent
{
public int AgentId { get; set; }
public int PrimaryAddressId { get; set; }
public Address PrimaryAddress { get; set; }
public int? MailingAddressId { get; set; }
public Address MailingAddress { get; set; }
}
public class Address
{
public int AddressId { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
}
I believe the issue has something to do with the fact that Agent
has more than one property of type Address
and possibly also because one of them is nullable. I've done some searching, but can't seem to find an answer.
I assume altering my Agent
model to have a single property of type List<Address>
that would use a UserAddresses
lookup table would resolve the error, but I would prefer to keep the current model and not.
How can I resolve this error? Thanks in advance.
This can happen if your configuration and your model do not match.
Let's say in your db configuration you have a rule like this:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Agent>().HasRequired(x=>x.MailingAddress);
//..
But in your model you say that MailingAddress is optional:
public int? MailingAddressId { get; set; }
I believe the issue has something to do with the fact that Agent has more than one property of type Address and possibly also because one of them is nullable
It's not the case.
For database first: if you altered an existing table already added to Entity Framework, say added a foreign key constraint after the fact, delete the table in the EDMX designer and add again and this will resolve the error.
Another way to determine the root of the problem is the following :
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