小编Max*_*Max的帖子

MVC 3 EF 4.1 dbContext - 删除具有不可为空的外键关系的一对多数据对象

我正在使用MVC 3,EF 4.1和dbContext.我需要知道如何使用不可为空的外键删除一对多关系中的实体.

当我删除子实体并执行SaveChanges时,我收到错误:

操作失败:无法更改关系,因为一个或多个外键属性不可为空.当对关系进行更改时,相关的外键属性将设置为空值.如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象.

从其他帖子中,我了解使用Remove(entity)标记要删除的实体.在SaveChanges期间,EF将外键设置为Null,并发生上述错误.

我发现一些帖子在子实体上使用DeleteObject而不是Remove; 但是,由于添加了dbContext和DbSet,似乎删除了DeleteObject方法.

我发现帖子建议将EDMX外键关系修改为Nullable.修改EDMX很好,但每当完成数据库更新模型时,这些更改都会被修改,必须重新应用.不是最佳的.

另一篇文章建议创建一个外键关系设置为Nullable的代理实体,但我不明白这种方法.它似乎与修改EDMX的问题相同,因为当保存对EDMX的更改时,上下文会自动更新.

我的简化模型是:

public partial class User
{
    public User()
    {
        this.UserContacts = new HashSet<UserContact>();
    }

    public long userId { get; set; }
    public string userEmail { get; set; }
    public string userPassword { get; set; }
    public string userFirstName { get; set; }
    public string userLastName { get; set; }
     . . .
    public virtual Country Country { get; set; }
    public virtual State State { get; set; }
    public virtual …
Run Code Online (Sandbox Code Playgroud)

entity-framework asp.net-mvc-3

14
推荐指数
1
解决办法
2万
查看次数

标签 统计

asp.net-mvc-3 ×1

entity-framework ×1