插入时列名无效 - 实体框架

时间:2016-01-20 09:37:56

标签: c# sql-server entity-framework ef-code-first

我首先使用代码使用Entity框架。我在数据库中有3个表:

  • 放置
  • PROFIL
  • PlaceMember

这是一个多对多的关系。一个地方可以有许多Profils作为成员,profil可以成为许多地方的成员。 PlaceMember是关系表。 PlaceDTO代码:

[Table("Place")]
public partial class PlaceDTO
{
    public PlaceDTO()
    {
        Members = new HashSet<ProfilDTO>();
    }

    public int id { get; set; }

    [StringLength(100)]
    public string description { get; set; }

    public DateTime dateOut { get; set; }

    public DateTime createDate { get; set; }

    public int? canceled { get; set; }

    public int profilId { get; set; }

    public int addressId { get; set; }

    public virtual AddressDTO Address { get; set; }

    public virtual ProfilDTO Profil { get; set; }

    public virtual ICollection<ProfilDTO> Members { get; set; }
}

Profil类代码:

public partial class ProfilDTO
{
    public ProfilDTO()
    {
        Devices = new HashSet<DeviceDTO>();
        Notifications = new HashSet<NotificationDTO>();
        Places = new HashSet<PlaceDTO>();
    }

    public int id { get; set; }

    [Required]
    [StringLength(50)]
    public string pseudo { get; set; }

    [Required]
    [StringLength(50)]
    public string firstname { get; set; }

    [Required]
    [StringLength(50)]
    public string lastname { get; set; }

    [Required]
    [StringLength(15)]
    public string phone { get; set; }

    [Required]
    [StringLength(50)]
    public string emailAdresse { get; set; }

    [Required]
    [StringLength(150)]
    public string password { get; set; }

    public DateTime lastUpdatePassword { get; set; }

    public DateTime lastUpdateProfil { get; set; }

    public DateTime createDate { get; set; }

    public byte[] picture { get; set; }


    public virtual ICollection<PlaceDTO> Places { get; set; }
}

PlaceMember类代码:

 [Table("PlaceMember")]
public partial class PlaceMemberDTO
{
    [Key]
    [Column(Order = 0)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int placeId { get; set; }

    [Key]
    [Column(Order = 1)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int invitedId { get; set; }
}

在数据库中, placeId inviteId 都是表格的标识密钥。 当我尝试向Place表添加一个新位置时,我得到PlaceDTO_id不是一个有效的列名,尽管数据库中的place表有一个名为id的列并且是标识列。

 context.Address.Attach(place.Address);
 context.Address.Add(place.Address);

 place.addressId = place.Address.id;
 context.Places.Attach(place);
 context.Places.Add(place);            
 context.SaveChanges();

放置在param中的place对象包含3个存在于Profil表中的成员。 当我从 PlaceDTO 表中删除会员字段时,会插入该地点,但 PlaceMember 表中没有添加任何内容。

怎么了?

0 个答案:

没有答案