我首先使用带有实体框架 5 代码和 C# 的 VS 2010,并且有一个 Web 应用程序(因此断开连接的实体)。我习惯于直接使用 SQL 查询,但对 EF 和代码非常陌生。
我有两节课:
public class User
{
public int UserID {get; set;}
public string UserName { get; set; }
public bool IsSuspended { get; set; }
public int UnitID { get; set; }
public virtual MyTrust MyTrusts { get; set; }
}
public class MyTrust
{
public int MyTrustID { get; set; }
public string MyTrustName { get; set; }
public string Region { get; set; }
public bool DoNotUse { get; set; }
}
我的 DbContext 类包含:
public DbSet<MyTrust> MyTrust { get; set; }
public DbSet<User> Users { get; set; }
modelBuilder.Entity<User>()
.HasRequired(m => m.MyTrust);
MyTrust 实体不会更改我感兴趣的三种情况:
- 添加具有现有 MyTrust 的用户
- 在不更改信任的情况下更新用户
- 通过更改信任更新用户
当网站返回数据时,MyTrust 对象只设置了 MyTrustID。当我更新/添加用户时,MyTrust 记录也会更新。
澄清用户对象中的关系没有更新;使用从网站返回的数据更新实际的 MyTrust 对象;由于大多数字段为空,这会破坏对象并且无法实现所需的用户记录更新。
事实上,问题似乎归结为关系的错误结束正在更新的事实。
我查看了许多示例,但看不到简单的解决方案。
任何人都可以为此建议一个简单的模式(在 SQL 时代这很容易)。
更新 我通过向 User 和 MyTrust 类添加特定键来解决这个问题。
public int NHSTrustID { get; set; }
和 MyTrust 类中的匹配键。
回想起来,这个问题是错误的。我追求的不是模式,而是特定问题的解决方案。