EntityFramework 和 Umbraco - 使用 Umbraco 成员 NodeID 作为外键

EntityFramework and Umbraco - Use Umbraco Member NodeID as Foreign Key

我目前正在为 Umbraco 项目(独立于 Umbraco DB)的数据库创建一些 table。

我需要外部数据库中的 table 之一来使用 Umbraco 数据库中 [dbo].[cmsMember] table 的 nodeId。

通常要添加外键,我会向模型中添加一些内容,例如:

public class Example {

    public int FKProperty { get; set; }

    [ForeignKey("FKProperty")]
    public FKEntity Entity { get; set; }

}

有没有办法让 Umbraco 会员遵循同样的模式?

谢谢

因为您讨论的是在 Umbraco 数据库外部的数据库上使用 EF,所以您将无法利用 ForeignKey 属性。你可以做的是在你的模型上创建一个计算的(NotMapped)属性 并通过存储在你的外部数据库中的 MemberId 属性 将它链接到 Umbraco 成员对象......也许是这样的:

public class Example {

    public int Key { get; set; }

    public int MemberId { get; set; }

    [NotMapped]
    public Member Entity {
        get 
        {
            return Umbraco.Core.ApplicationContext.Current.Services.Members.GetById(MemberId);
        }
        set
        {
            MemberId = value.Id;
        }
    }

}

您还可以使用 Guid 而不是 int 作为您的 MemberId,并调用 GetByKey 而不是 GetById

您可能希望将成员设置为私有变量,而不是每次需要引用 属性 时都检索它。