c# - Entity Framework 6 中一对多依赖的更新问题
问题描述
我在正确使用具有一对多关系的实体框架时遇到了一些问题。
这是模型的一部分:
public class User
{
[Required]
public int UserID { get; set; }
[Required]
public string Login { get; set; }
//one to many relationship
public virtual Group Group { get; set; }
}
public class Group
[Required]
public int GroupID { get; set; }
[Required]
public string Name { get; set; }
public virtual Group ParentGroup { get; set; }
public virtual List<Group> ChildGroups { get; set; }
[Required]
public User CreatedBy { get; set; }
}
public class OtherClass
[Required]
public int OtherClassID { get; set; }
[Required]
public User CreatedBy { get; set; }
}
我对更新 OtherClass 实体有疑问。
当我要更新一个实体时,它没有加载依赖项,我必须使用这样的 Include 添加它们:
using (var db = new DalContext())
{
var test = db.OtherClasses.Include(o => o.CreatedBy).Single....
}
但是如果我想更新一个 OtherClass 实体,为什么必须加载所有依赖项?
要恢复,当我要更新 OtherClass 实体时,必须完全加载 CreatedBy 依赖项,与组一起,对于组,父组和子组,与用户......
是否可以添加或更新仅填充 ID 属性的实体?
谢谢您的帮助。
解决方案
我不是专家,但我会尝试以下方法:
我相信您的 Group 和 OtherClass 类中应该有一个 UserId,如下所示:
public class User
{
[Required]
public int UserID { get; set; }
[Required]
public string Login { get; set; }
//one to many relationship
public virtual Group Group { get; set; }
}
public class Group
[Required]
public int GroupID { get; set; }
[Required]
public string Name { get; set; }
public virtual Group ParentGroup { get; set; }
public virtual List<Group> ChildGroups { get; set; }
[Required]
public int UserId { get; set; }
//If you want to lazy-load the user when you load the Group entity, use virtual
//Then you don't need the .Include(g=>g.User)
public virtual User CreatedBy { get; set; }
}
public class OtherClass
[Required]
public int OtherClassID { get; set; }
[Required]
public int UserId { get; set; }
public virtual User CreatedBy { get; set; }
}
要更新 OtherClass,您需要更新/设置 Id 属性,而不是 User 属性。
推荐阅读
- javascript - 如何通过点击事件向输入框添加文本?
- laravel - 如何在 Redis pub/sub 上运行 phpunit 测试?
- java - RestTemplate 结果无法反序列化
- python - validate_on_submit() 在 Flask 中不起作用。我应该怎么办?
- kubernetes - 将日志文件写入慢速磁盘或将 Tomcat 访问日志发送到 ElasticSearch?
- python - 给定pandas DataFrame中一列中的值列表,如何从同一行中的另一列输出值?
- javascript - 如何将前六个月放入数组
- python - 为什么此函数会引发“无效语法”错误?
- c# - 如何有效地在大量代码库中搜索多个文字字符串?
- node.js - 为什么使用不同版本的 NPM?