gpt4 book ai didi

c# - Entity Framework 6 自定义关系约定

转载 作者:行者123 更新时间:2023-11-30 20:59:07 25 4
gpt4 key购买 nike

我已阅读 this关于 Entity Framework 6 中约定的文档。但它不包含关系约定。

假设我有以下模型:

[TablePrefix("mst")]
public class Guru
{
public int Id { get; set; }

public int? IdKotaLahir { get; set; }

public virtual Kota KotaLahir { get; set; }
}

我想要属性(property) IdKotaLahir成为导航属性的外键KotaLahir .外键名称是 "Id"+<NavigationPropertyName> .是否可以使用当前版本的 Entity Framework (EF 6 alpha 3)?

最佳答案

在 EF6 中,已接受答案的约定不再有效,因为 IConfigurationConvention 是内部的。处理这种情况的方法是继承ForeignKeyDiscoveryConvention。

public class MyForeignKeyDiscoveryConvention : ForeignKeyDiscoveryConvention
{
protected override bool MatchDependentKeyProperty(AssociationType associationType, AssociationEndMember dependentAssociationEnd,
EdmProperty dependentProperty, EntityType principalEntityType, EdmProperty principalKeyProperty)
{
string navigationPropertyName = ((System.Reflection.PropertyInfo)dependentAssociationEnd.MetadataProperties.GetValue("ClrPropertyInfo", false).Value).Name;

// The standard foreign key property to look for is NavigationProperty_PrimaryKeyName (e.g. "TableName_Id").
// Use the below line to remove that underscore.
//return dependentProperty.Name == navigationPropertyName + principalKeyProperty.Name;

// Use the following for the IdKotaLahir scenario
return dependentProperty.Name == "Id" + navigationPropertyName;
}
}

关于c# - Entity Framework 6 自定义关系约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15590977/

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