我有两个具有多对多关系的表。当我使用Package Manager控制台添加迁移时,创建了一个联结表。我不确定这与我要实现的目标有多相关。
设置如下...
客户可以有很多家庭成员
家庭成员帐户也可以链接到多个客户
我已经像这样建立了模型
家庭帐户模型
public class FamilyAccount
{
public FamilyAccount()
{
this.Clients = new HashSet<Client>();
}
public int Id { get; set; }
public string firstName { get; set; }
public string lastName { get; set; }
public string userName { get; set; }
public string emailAddress { get; set; }
public virtual ICollection<Client> Clients { get; set; }
}
和客户端模型
public class Client
{
public Client()
{
this.Family = new HashSet<FamilyAccount>();
}
public int Id { get; set; }
public string Title { get; set; }
public string firstName { get; set; }
public string middleNames { get; set; }
public string lastName { get; set; }
public virtual ICollection<FamilyAccount> Family { get; set; }
}
在我的控制器上的create方法上,我传递了新的家庭帐户的模型以及要为其创建帐户的clientId。我试图像这样使用lambda访问属性
public ActionResult Create(FamilyAccount familyAccount, int clientId)
{
if (ModelState.IsValid)
{
db.FamilyAccounts.Add(familyAccount);
db.SaveChanges();
return RedirectToAction("Index", new { Id = familyAccount.Clients.Id});
}
return View(familyAccount);
}
在上下文文件中,我进行了以下设置
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Client>()
.HasMany(c => c.Family).WithMany(i => i.Clients)
.Map(t => t.MapLeftKey("Client_Id")
.MapRightKey("FamilyAccount_Id")
.ToTable("FamilyAccountClients"));
}
无论出于何种原因,我都无法访问familyAccounts.Clients的属性,因此无法使用familyAccounts.Clients.Id
如果有人能让我知道我要去哪里错了,我将不胜感激