与多对多关系一起使用时,EF Code First Table Splitting问题

时间:2013-07-14 23:01:16

标签: entity-framework ef-code-first many-to-many code-first

我正在尝试在EF Code First中使用“Table Splitting”,当我使用一对多类型的实体关系之一时,它工作正常,但只要我在多对多中使用它我开始得到这个错误:

  

(27,6):错误3018:从行开始映射片段时出现问题   27:表中的外键约束'Itinerary_Addresses_Target'   ItineraryAddress(Address_Id)到表User(Id):表的列   ItineraryAddress映射到AssociationSet Itinerary_Addresses的   结束Itinerary_Addresses_Target但表User的键列是   未映射到对应的EntitySet地址的键   这个结束。

以下是代码(https://github.com/jorgef/tablesplitting):

表格拆分

public class User
{
  public int Id { get; set; }
  public string Name { get; set; }
  public Address Address { get; set; }
}

public class Address
{
  public int Id { get; set; }
  public string Street { get; set; }
  public User User { get; set; }
}

modelBuilder.Entity<User>().ToTable("Users");
modelBuilder.Entity<Address>().ToTable("Users");
modelBuilder.Entity<User>().HasRequired(u => u.Address).WithRequiredPrincipal(a => a.User);

一对多关系

public class Itinerary
{
  public int Id { get; set; }
  public ICollection<Address> Addresses { get; set; }
}

使用之前的代码,一切都像魅力一样,问题在于引入多对多关系


多对多关系

public class Address
{
  ...
  public ICollection<Itinerary> Itineraries { get; set; }
}

添加该关系后,应用程序会在运行时引发上述异常。我设法将生成的edmx保存到磁盘,以防万一有帮助,这里是链接:https://github.com/jorgef/tablesplitting/blob/master/TableSplitting/SavedModel.edmx

如果有人想要使用应用程序的两个版本,一个正在运行,另一个正在运行,我有两个不同的提交:

  • 表拆分使用一对多关系
  • 表拆分无法处理多对多关系

感谢任何想法或想法。

非常感谢!

1 个答案:

答案 0 :(得分:1)

如果其他人遇到此问题:

这是Entity Framework中的一个错误。此错误已修复,升级到EF6将解决问题。有关详细信息,请参阅以下讨论 https://entityframework.codeplex.com/workitem/1385

表格拆分验证的相关错误也已被发现并修复,计划与EF6.1.0一起发布: https://entityframework.codeplex.com/workitem/1611