首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除关系.HasOptional().WithMany() (EntityFramework)

如何删除关系.HasOptional().WithMany() (EntityFramework)
EN

Stack Overflow用户
提问于 2012-06-23 19:40:52
回答 1查看 451关注 0票数 1

我有两个带有关系的表:

代码语言:javascript
复制
    modelBuilder.Entity<User>()
        .HasOptional(u => u.Subscription)
        .WithMany();

如何删除关系?我想删除订阅,但离开所有用户。如果我删除订阅EF抛出异常:

代码语言:javascript
复制
"The DELETE statement conflicted with the REFERENCE constraint
\"FK_Users_Subscriptions_Subscription_Id\". 
The conflict occurred in database \"db\",table \"dbo.Users\",
column 'Subscription_Id'.\r\nThe statement has been terminated.

我想拥有从用户到订阅的访问权限。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-23 21:38:47

删除订阅时,必须确保具有该订阅的所有用户的订阅引用都设置为null,否则会违反数据库中的外键约束。我认为,将要删除的订阅加载到上下文中就足够了。EF将自动修复这些关系:

代码语言:javascript
复制
using (var ctx = new MyContext())
{
    var subscriptionToDelete = ctx.Subscriptions.Find(subscriptionToDeleteId);
    ctx.Users.Where(u => u.Subscription.Id == subscriptionToDeleteId).Load();

    ctx.Subscriptions.Remove(subscriptionToDelete);

    ctx.SaveChanges();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11169215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档