我有实体关联刷新的问题.当我得到一个像这样的实体:
MyContext context = new MyContext();
Person myPerson = context.PersonSet.FirstOrDefault();
String myPersonName = myPerson.Name;
Address myPersonAddress = myPerson.Address;
Run Code Online (Sandbox Code Playgroud)
我找到了一个名为Address的关联和名为Name的属性的人.如果我手动修改数据库中的数据,例如属性Name,我必须使用以下代码重新加载我的实体:
context.Entry(myPerson).Reload();
Run Code Online (Sandbox Code Playgroud)
我有Name的新值.但如果我为地址做同样的事情它也行不通.我认为这是因为地址是一个协会财产.我需要刷新它.
如何强制重新加载Address关联(以及Person类中的所有其他关联)?
编辑:
在同一个案例中,一个人可以拥有多个地址.
MyContext context = new MyContext();
Person myPerson = context.PersonSet.FirstOrDefault();
String myPersonName = myPerson.Name;
List<Address> myPersonAddresses = myPerson.Addresses;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它不是参考:
context.Entry(myPerson).Reference(p => p.Address).Load();
// Address will be populated with only the new address
// this isn't required because I use lazy loading
Run Code Online (Sandbox Code Playgroud)
但收藏品:
context.Entry(myPerson).Collection(p => p.Addresses).Load();
// Address will be populated with old value and new value
Run Code Online (Sandbox Code Playgroud)
我需要用它来工作: …
我需要将实体切换到内部.所以我创造了它.没有构建/运行时错误.但是当我想使用DbSet对象时我不能,因为对象似乎没有初始化!
我的ContextEntities:
public partial class Entities
{
internal DbSet<Employee> EmployeeSet { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我用这样的:
Entities context = new Entities();
List<Employee> employees = context.EmployeeSet.ToList();
Run Code Online (Sandbox Code Playgroud)
但"EmployeeSet"为空.我认为这是因为它没有在get中实例化.如果我像这样使用public,它可以工作:
public partial class Entities
{
public DbSet<Employee> EmployeeSet { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
问题:如果DbSet标记为内部,它可以工作吗?如果是这样的话?为什么会破坏它?(谢谢Scott Stafford)
我有与here完全相同的上下文。
问题:
我运行一个本地 IIS 服务器来开发一个网站并且它可以工作。但是,如果我尝试调试,它会显示“无法在 Web 服务器上开始调试。您无权调试 Web 服务器进程。” 如本网站所述。它也有解决方案,以管理员身份运行。
问题是我还必须将网站发布到远程计算机。我已经为正确的文件夹(驱动器 W)创建了一个网络映射。仅当我不以管理员身份运行 VS 时,才能发布到此驱动器。作为管理员,它给出了错误路径“W:\”不存在或您无权访问
现在我想同时执行这两项操作,而不必每次都以不同的模式重新启动 VS。
现在我尝试了第一条错误消息中的另一个选项,即以同一用户身份运行 IIS。我更改了应用程序池用户,现在当我查看任务管理器时,devenv.exe 和 w3wp.exe 都以 h.delsing 的身份运行,但如果没有明确授予管理员权限,它仍然无法工作。我是否需要更改其他内容才能以同一用户身份同时运行 IIS 和 VS?
另一种选择是允许以管理员身份访问 W。奇怪的是,如果我以管理员身份运行另一个程序(totalcommander),我仍然可以访问 W 驱动器。所以我不知道如何做到这一点。
据我所知,相同的设置在 Windows 7 上运行良好,它使用相同的身份验证结构。唯一的区别是 Windows 8 与我的真实帐户相关联。我当然希望这不是导致问题的原因,因为我读到 Windows 在实际使用的帐户方面有点粗略。
简而言之:
一些想法?