我有一个称为帐户的复杂类型,其中包含许可证列表。 许可证又包含一个域列表(域是一个简单的id + url字符串)。使用ef代码优先更新复杂类型
在我的仓库我有这样的代码
public void SaveLicense(int accountId, License item)
{
Account account = GetById(accountId);
if (account == null)
{
return;
}
if (item.Id == 0)
{
account.Licenses.Add(item);
}
else
{
ActiveContext.Entry(item).State = EntityState.Modified;
}
ActiveContext.SaveChanges();
}
当我尝试保存更新的许可证(含修改域)发生的事情是属于直许可证字符串得到更新就好了。
但是没有域名更新。
我应该提到,我所做的是允许用户在用户界面中添加和删除域。任何新的域获得id = 0,任何删除的域都不在列表中。
所以我要的是
- 是在列表中,数据库和任何未更改域 - 什么也没有发生
- 是在列表和数据库中的任何领域,但在列表中改变 - 数据库被更新
- 与ID的任何结构域= 0应插入(添加)到数据库
- 任何域NOT在列表中但在数据库应被删除
我已经玩了一下没有成功,但我有一个鬼鬼祟祟的怀疑,我在大图中做错了事,所以如果我误解某些设计方面的东西或者只是错过了某些东西,我会喜欢提示。
谢谢你,这是我担心,但至少我现在已确认,并不真的感到非常不满意这样做...如果多数民众赞成如何:-)然而,如果他们能够对EF –
@RickardLiljeberg实施一些很好的支持将会非常好:是的,您可以使用上面的代码,但它只是一个子集合。如果你有多个集合,孙子和孙子......等等,那就不好笑了。顺便说一句:你可以投票选择这个特性:http://entityframework.codeplex.com/workitem/864。但在EF 7之前不会发生(如果有的话),所以可能至少要等待一年。 – Slauma
我投票愉快,我真的很惊讶地发现EF在这方面有多么有限。 –