gpt4 book ai didi

c# - 自动生成的实体类中缺少导航属性

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:21 25 4
gpt4 key购买 nike

我正在迈向 Entity Framework 4.0 的第一步,但我目前正面临一个烦人的问题。

我的应用程序的身份验证/授权过程基于标准的 ASP.NET 成员提供程序,换句话说,数据库是众所周知的 ASPNETDB.MDF。在该数据库中,除其他外,还有表 aspnet_Users 和 aspnet_Roles,它们由表 aspnet_UsersInRoles 链接在一起。

我生成了一个新的“ADO.NET 实体数据模型”,我选择了“从数据库生成”,我提供了所有必要的参数,向导为我生成了相关的 .EDMX 文件。我将其命名为“SecurityModel”。在 aspnet_User 实体中,我可以看到有一个导航属性应该检索所有链接的角色,反之亦然。

此时我添加了一个新的“域服务”,在我的例子中是 SecurityDomainService。当我被询问时,我选择了 SecurityModel 及其包含的所有表。即使在这种情况下,向导也会为我生成 SecurityDomainService。

显然没有任何问题。但是,我意识到在实体 aspnet_User 中我拥有所有导航属性(成员身份、配置文件、应用程序等)但角色。

我在某处读到 EntityFramework 不处理多对多关系。但是我可以在我的实体数据模型中看到 aspnet_Roles 和 aspnet_Users 之间存在关联,并且它基于 aspnet_UsersInRoles。我还可以在数据模型设计器中看到用户实体中的“角色”导航属性。

所以,我的问题是为什么没有生成这个导航属性?

在此先感谢您的所有帮助。干杯,G.

最佳答案

这里的问题在于,aspnet_UsersInRoles 表仅包含多对多关系中表的主键字段。 Entity Framework “内联”该表,并不将其表示为一个实体。 Entity Framework 可以很好地处理这种情况——RIA 服务不支持这种类型的关系。

简单地向表中添加一个额外的字段将阻止它被内联并导致生成 aspnet_UsersInRoles。这将在 RIA 服务中得到支持。

您需要小心修改 aspnet 架构,以确保您不会破坏任何存储过程等,但添加可为 null 的位列不应导致太多中断。

关于c# - 自动生成的实体类中缺少导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4992246/

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