我有两个具有相当标准的多对多关系的实体,它们是在 EF 5 Code First 中创建的。这些是服务和服务项目。Service 实体包含一个 ServiceItem 集合,ServiceItem 包含一个服务集合。我可以毫无问题地创建、更改数据并将数据保存到任一实体的基本属性。当我尝试将 ServiceItem 添加到 Service 或将 Service 添加到 ServiceItem 时,它似乎可以工作,但没有保存任何内容。我已经验证创建了所有正确的数据库表,包括带有交叉键的 ServiceItemService 表。添加项目时,数据库 ServiceItemService 表没有任何条目。没有错误,其他一切似乎都运行良好。
我有点难过,可以使用一些帮助。以下是课程。
服务类;
public class Service
{
//Default constructor
public Service()
{
//Defaults
IsActive = true;
ServicePeriod = ServicePeriodType.Monthly;
ServicePeriodDays = 0;
ServiceItems = new Collection<ServiceItem>();
}
public int ServiceID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public ICollection<ServiceItem> ServiceItems { get; set; }
public string TermsOfService { get; set; }
public ServicePeriodType ServicePeriod { get; set; }
public int ServicePeriodDays { get; set; }
public bool IsActive { get; set; }
}
ServiceItem 类;
public class ServiceItem
{
public ServiceItem()
{
IsActive = true;
}
public int ServiceItemID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public ICollection<Service> Services { get; set; }
public string UserRole { get; set; }
public bool IsActive { get; set; }
}
这是我在尝试调试此问题时所做的 Fluent 映射。添加此映射之前和之后发生了相同的问题。
public DbSet<Service> Services { get; set; }
public DbSet<ServiceItem> ServiceItems { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Service>()
.HasMany(p => p.ServiceItems)
.WithMany(r => r.Services)
.Map(mc =>
{
mc.MapLeftKey("ServiceItemID");
mc.MapRightKey("ServiceID");
mc.ToTable("ServiceItemService");
});
}
这是我用来保存 Service 项目的代码,该项目在 Service.ServiceItems 集合中包含 2-3 个 ServiceItems。我已仔细验证 ServiceItems 是否在正确的集合中。
db.Entry(dbService).State = EntityState.Modified;
db.SaveChanges();
dbService 对象似乎没有受到任何影响。ServiceItems 仍在正确的集合中,但没有对 ServiceItemService 数据库表进行更新。任何建议都会非常受欢迎。
-谢谢