gpt4 book ai didi

c# - 如何识别标记为级联删除的关联

转载 作者:行者123 更新时间:2023-11-30 21:20:01 26 4
gpt4 key购买 nike

我使用的是 EF 4.0,在我的实体数据模型中,我有几个关系,其中我有一对多关联,并将关联标记为 Cascade OnDelete。有没有办法以编程方式识别实体类型 T 的这些关联?

我想到的一个选项是识别这些关联,并在我的 T4 模板中注释导航属性,以识别它们是级联删除。当然,我需要知道如何识别关联是否在我的 T4 模板中被标记为级联删除。

最佳答案

您可以通过 MetadataWorkspace 类以编程方式发现比您想知道的更多关于您的实体模型的信息。然而,API 有点难以理解。以下是如何发现关系(通过导航属性)及其关联的 OnDelete 设置的示例:

using (var context = new AppEntities())
{
var container = context.MetadataWorkspace.GetEntityContainer("AppEntities", System.Data.Metadata.Edm.DataSpace.CSpace);

foreach (var entitySet in container.BaseEntitySets.OfType<EntitySet>())
{
var elementType = entitySet.ElementType;

foreach (var np in elementType.NavigationProperties)
{
if (np.FromEndMember.DeleteBehavior == OperationAction.Cascade)
{
var entityType = np.FromEndMember.GetEntityType();

// do stuff...
}

if (np.ToEndMember.DeleteBehavior == OperationAction.Cascade)
{
var entityType = np.ToEndMember.GetEntityType();

// do stuff...
}
}
}
}

仅供引用,我认为上面的代码可能会两次识别相同的关系(从每一端各一次)。

关于c# - 如何识别标记为级联删除的关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3502256/

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