我有麻烦看到我需要更正或添加到我的控制器为了将我的数据保存到数据库。看到下面我到目前为止。无法将对象和子对象保存到数据库?
创建方法
[HttpPost]
public ActionResult Create(Team model)
{
if (ModelState.IsValid)
{
new Team
{
Name = model.Name,
Division = model.Division,
Description = model.Description,
TeamContact = new TeamContact
{
EmailAddress = model.TeamContact.EmailAddress,
PhoneNumber = model.TeamContact.PhoneNumber,
TeamAddress = new TeamAddress
{
Box = model.TeamContact.TeamAddress.Box,
StreetName = model.TeamContact.TeamAddress.StreetName,
StreetNumber = model.TeamContact.TeamAddress.StreetNumber,
City = model.TeamContact.TeamAddress.City,
PostalCode = model.TeamContact.TeamAddress.PostalCode,
Province = model.TeamContact.TeamAddress.Province
}
}
};
_dataSource.Save();
}
return View(model);
表关系
-Team one-to-one TeamContact
-TeamContact one-to-on TeamAddress
接口的IDataSource
IQueryable<Team> Teams { get; }
IQueryable<TeamAddress> TeamAddresses { get; }
IQueryable<TeamContact> TeamContacts { get; }
void Save();
Context类
public DbSet<Team> Teams { get; set; }
IQueryable<Team> IDataSource.Teams
{
get { return Teams; }
}
public DbSet<TeamAddress> TeamAddresses { get; set; }
IQueryable<TeamAddress> IDataSource.TeamAddresses
{
get { return TeamAddresses; }
}
public DbSet<TeamContact> TeamContacts { get; set; }
IQueryable<TeamContact> IDataSource.TeamContacts
{
get { return TeamContacts; }
}
public void Save()
{
SaveChanges();
}
缺少什么我有我的数据保存到数据库?
我不看你怎么添加新实体的背景下 - 像'_dataSource.Teams.Add(队)' – Pawel
@Pawel'添加()'是的ICollection的方法,并会工作,如果实体团队在另一个实体中拥有Icollection属性。例如:'public virtual ICollection Team {get;组; }'当我为团队实体正在收集的Player实体编写一个create方法时,您的建议将会起作用。 –
Komengem
我正在谈论'DbSet团队'上暴露的'Add()' - 如果不添加DbContext应该如何知道这个对象?唯一的另一种方法是添加一个引用你创建的新Team实体的实体,但是在你的代码中没有看到类似的东西。 –
Pawel