我有3个表,但是当我创建edmx时,它只在edmx模型上显示2。我也无法通过导航访问我的外部参照表。我需要将每个表中的主键id插入到外部参照表中,但我不知道如何操作,因为我没有获得任何导航属性,并且它没有显示在模型中。以下是表格:
CREATE TABLE Message (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
email_body TEXT BINARY NOT NULL,
create_date DATETIME NOT NULL,
PRIMARY KEY (id)
)
CREATE TABLE Address (
id BIGINT(20) NOT NULL AUTO_INCREMEN
PRIMARY KEY (id)
)
CREATE TABLE AddressMessageXref (
message_id BIGINT(20) NOT NULL,
address_id BIGINT(20) NOT NULL,
PRIMARY KEY (message_id, address_id),
INDEX address_id (address_id),
INDEX message_id (message_id),
CONSTRAINT FK_AddressMessageXref_Address_id FOREIGN KEY (address_id)
REFERENCES Address(id) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT FK_AddressMessageXref_Message_id FOREIGN KEY (message_id)
REFERENCES Message(id) ON DELETE RESTRICT ON UPDATE RESTRICT
)
我需要做的是在插入Message表和Address表之后,我需要将返回的id插入到AddressMessageXref表中。
答案 0 :(得分:1)
从EntityFramwork中看不到外部参照表,框架将为您填充。
public class Message
{
public int Id {get;set;}
public string Body {get;set;}
[...]
public virtual ICollection<Address> Addresses {get;set;}
}
public class Address
{
public int Id {get;set;}
[...]
public virtual ICollection<Message> Messages {get;set;}
}
使用类似这样的设置,当您将消息添加到地址时,反之亦然。 EntityFramework实际上将数据插入到外部参照表中。
示例:
var address = new Address();
var message1 = new Message();
var message2 = new Message();
message1.Addresses.Add(address);
address.Messages.Add(message2);
dataContext.Addresses.Add(address);
dataContext.SaveChanges();
该代码将在地址表中插入1个实体,在消息表中插入2个,在外部参照表中插入3个。