-1

我正在构建一个名为“User”的类,它有一个“Category”类型的字段。

public class User
{
     public long Id { get; set; }
     public virtual Category Category{ get; set; }
}

public class Category
{
     public long Id { get; set;}
     public string Name { get; set; }
}

每当此字段获得值时,就无法再设置空值。

如何再次将此字段设置为空?

4

2 回答 2

1

我认为这与延迟加载有关。由于您没有为用户请求类别,因此它仍然为空,因此将其设置为空,不会触发 EF,即类别上有更改。您需要在用户中包含类别,然后更改该值。这样 EF 将看到 Category 上的更改并将其设置为 null。

尝试这样的事情:

var user = Context.User.Include(x => x.Category).FirstOrDefault(x => x.Id == yourUserid);
// now user knows about Category, so you can set it to null
user.Category = null;
Context.SaveChanges();
于 2012-09-03T20:58:57.310 回答
0

只需将属性设置为 null:

        User user = new User();
        user.Category = new Category();
        user.Category.Id = 1;
        user.Category.Name = "test";
        user.Category = null;

你有这个想法吗?

于 2012-09-03T20:38:50.640 回答