使用Entity Framework查看并插入Xref表?

时间:2013-10-07 18:45:17

标签: mysql entity-framework .net-3.5

我有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表中。

1 个答案:

答案 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个。