I am trying to create a model that has a Customer entity with two references to Address entities: BillingAddress and ShippingAddress.
Customer
public class Customer
{
public Guid CustomerId { get;set;}
public Guid? BillingAddressId { get; set; }
public Address BillingAddress { get; set; }
public Guid? ShippingAddressId { get; set; }
public Address ShippingAddress { get; set; }
}
Address
public class Address
{
public Guid AddressId { get; set; }
public Customer Customer { get; set; }
public Guid CustomerId { get; set; }
}
OnModelCreating
modelBuilder.Entity<Address>(eb =>
{
eb.HasOne(e => e.Customer).WithOne(o => o.BillingAddress).OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<Address>(eb =>
{
eb.HasOne(e => e.Customer).WithOne(o => o.ShippingAddress).OnDelete(DeleteBehavior.Cascade);
});
I get the following error when trying to create the migration:
Can not]Cannot create a relationship between 'Customer.ShippingAddress' and 'Address.Customer', because there already is a relationship between 'Customer.BillingAddress' and 'Address.Customer'. Navigation properties can only participate in a single relationship.[/quote]
I'm trying to configure the model so that when the Customer is deleted the referenced Addresses are deleted as well. I would like to be able to do this without loading the Addresses into the Context and relying on the database to cascade.
4 Answer(s)
-
0
@ManojReddy I think you need to remove Customer reference from Address.
-
0
Thanks for response, but I don’t think that it should work
-
0
Whats the point of the address table if you only have a 1 to 1 relationship?
Address should return a collection of Customers.
-
0
<cite>BBakerMMC: </cite> Whats the point of the address table if you only have a 1 to 1 relationship?
Address should return a collection of Customers.
Yeap you'r right. Actually it's a value object. <a class="postlink" href="https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/implement-value-objects">https://docs.microsoft.com/en-us/dotnet ... ue-objects</a>