我首先使用EF 4.1 RC代码。我有一个多对多的关系,在交界处朋友中使用复合PK。我们明确需要一个单独的Friends类(不问),它代表了我们的联结表。我们的目标是能够控制用户实体的删除过程。在阅读其余部分之前,请阅读本文:http://mocella.blogspot.com/2010/01/entity-framework-v4-object-graph.html。所以,我们设法创建了我们的复合PK,但是这打破了我们的收藏映射。问题是如何映射FriendsCol?EF代码首次映射用于收集
public class User
{
public int UserId { get; set; }
public string Name { get; set; }
public virtual ICollecion<Friends> FriendsCol { get; set; }
}
public class Friends
{
public int User1Id { get; set; }
public int User2Id { get; set; }
public User User1 { get; set; }
public User User2 { get; set; }
}
具有复合键映射
public class FriendsMap : EntityTypeConfiguration<Friends>
{
HasKey(m => new { m.userId1 , m.userId2 });
//this.HasRequired(x => x.User1)
//.WithMany()
//.HasForeignKey(x => x.User1Id)
//.WillCascadeOnDelete(false);
//this.HasRequired(x => x.User2)
// .WithMany()
// .HasForeignKey(x => x.User2Id)
// .WillCascadeOnDelete(false);
}
public class UserMap : EntityTypeConfiguration<UserNew>
{
public UserMap()
{
ToTable("users");
Property(user => user.Name).HasColumnName("name");
// HasMany<Friends>(user => user.FriendsCol).WithMany();
}
}
嗨拉迪斯拉夫。我们今天早些时候尝试过,错误是:指定的Schema无效。错误: (23,6):错误0040:类型Friends_User1未在名称空间Blogtronix.Repository(Alias = Self)中定义。考虑我们的prev对话:http://stackoverflow.com/questions/5391679/ef-cf-many-to-many-relation-with-additional-info/5392138#5392138 – mynkow 2011-03-29 12:21:34
再试一次,我编辑了我的答案。 – 2011-03-29 12:31:50
我们也试过这个。然后我们得到FK错误:{“INSERT语句与FOREIGN KEY约束\”Friends_User1 \“冲突。数据库\”CoreContext \“,表\”dbo.users \“,列'user_id'发生冲突。\ r \ n声明已被终止。“} PS:user_id是用户PK。 – mynkow 2011-03-29 12:36:58