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
您可能希望将成员设置为私有变量,而不是每次需要引用 属性 时都检索它。
我目前正在为 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
您可能希望将成员设置为私有变量,而不是每次需要引用 属性 时都检索它。