gpt4 book ai didi

entity-framework - Entity Framework 5 在选择时排除属性

转载 作者:行者123 更新时间:2023-12-04 05:18:30 25 4
gpt4 key购买 nike

找不到任何匹配的解决方案。
让我们切入正题:MVC4 应用程序、EF 和 CodeFirstSharpMembership 提供程序。
有实体

 public class User
{
...
public virtual ICollection<Role> Roles { get; set; }
}

和标准角色实体:
public class Role
{
...
public virtual ICollection<User> Users { get; set; }
}

当然,当我尝试使用 FK 为用户创建自己的实体时
public class MyEntity
{
...
public virtual User Developer { get; set; }
}

我总是得到自引用循环,因为用户引用角色,角色引用用户。
然后我试着
Context = new DataContext();
Context.Configuration.LazyLoadingEnabled = false;

为了避免选择任何外键,并在选择某些东西之后
var Developers = Context.MyEntities;

当然,我的 IQueryable 没有“开发人员”字段。
然后我尝试:
var Developers = Context.MyEntities.Include("Developer");

当然还有自引用循环。

如何继续选择 FKey 并从用户中排除“角色”字段?

最佳答案

除非您使用无法处理自引用的方法(如序列化),否则自引用实体不应该有问题。如果您遇到序列化问题(我必须猜测,因为您没有提供任何您试图产生错误消息的内容,很可能是序列化或数据绑定(bind),我根本不知道)所以我建议:

Turning off Proxy object creation on your DbContext.

DbContext.Configuration.ProxyCreationEnabled = false;

通常这种情况是因为应用程序正在使用 POCO 对象(T4 生成或代码优先)。当 Entity Framework 想要跟踪未内置于 POCO 对象中的对象中的更改时,就会出现问题。为了解决这个问题,EF 创建了缺少 POCO 对象中的属性且不可序列化的代理对象。

我还要补充一点,你有一个 XY Problem .您在问如何排除一个属性(Y 问题),因为您认为它会解决一个问题(X 问题),它可能会也可能不会。实际上,您需要说明源问题(X),因为很可能存在根本不需要(Y)的解决方案(如我所描述的)。

关于entity-framework - Entity Framework 5 在选择时排除属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13940484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com