我首先使用代码使用Entity框架。我在数据库中有3个表:
这是一个多对多的关系。一个地方可以有许多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 表中没有添加任何内容。
怎么了?