How do I create an Entity with Multiple Navigation Properties to the same Table?
This question has been asked in a few variations, but I believe that my issue is somewhat uni开发者_StackOverflowque.
I'm using the database-first approach with Entity Framework 4, and I am trying to map and Account
to multiple Addresses
, as well as map that same account to BillingAddress
and ShippingAddress
.
Here is my db schema: Account
- ID
- BillingAddressID
- ShippingAddressID
Address
- ID
- AccountID
I have 3 foreign keys.
Account.BillingAddressID
toAddress.ID
Account.ShippingAddressID
toAddress.ID
Address.ID
toAccount.ID
I would like to have the following POCO setup:
public class Account {
public int ID { get; set; }
public virtual Address BillingAddress { get; set; }
public virtual Address ShippingAddress { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
}
public class Address {
public int ID { get; set; }
public int AccountID { get; set; }
}
Yet when I do this and try to create a new Account with an address, I get the following error:
"An error occurred while saving entities that do not expose foreign key properties for their relationships."
One thought I had was to shift the schema to a full many-to-many relationship between Account and Address. Then I guess I could put the Billing vs. Shipping vs. Other in the AccountAddresses table and use that in the foreign keys, but I am really curious if I can get it to work as is.
Account a = new Account();
// snip: add some account properties
Account.Addresses.Add(new Address {
// snip: some properties here
});
context.SaveChanges();
==> ERROR (as mentioned above)
Any thoughts? Thanks!
精彩评论