C# Fluent API中带常数的外键
我需要从数据库中加载一个required:many关系。现在我的问题是,相关表的键由三个键组成:C# Fluent API中带常数的外键,c#,sql-server,entity-framework,ef-fluent-api,C#,Sql Server,Entity Framework,Ef Fluent Api,我需要从数据库中加载一个required:many关系。现在我的问题是,相关表的键由三个键组成: public partial class EnumValue { [Key] [Column(Order = 0)] [StringLength(14)] public string EnumGroup { get; set; } [Key] [Column(Order = 1)] public byte EnumId { get; set;
public partial class EnumValue
{
[Key]
[Column(Order = 0)]
[StringLength(14)]
public string EnumGroup { get; set; }
[Key]
[Column(Order = 1)]
public byte EnumId { get; set; }
[Key]
[Column(Order = 2)]
[StringLength(3)]
public string Language { get; set; }
[StringLength(50)]
public string Description { get; set; }
}
在我的另一个对象中,我只有一个属性来填充外键,其他部分是该对象特定的常量。我尝试在EF6中建立关系,但无法使用常量而不是属性使其与model builder和Fluent API一起工作:
modelBuilder.Entity<SupplierCondition>()
.HasRequired(t => t.ConditionTypeLookupRef)
.WithMany()
.HasForeignKey(t => new { "PArt", t.ConditionType, "EN" });
modelBuilder.Entity()
.HasRequired(t=>t.ConditionTypeLookupRef)
.有很多
.HasForeignKey(t=>new{“PArt”,t.ConditionType,“EN”});
如何在Fluent API中将常量作为外键的值传递?您不能使用这些常量值,因为没有指定任何值,请通知Fluent API,哪个属性引用另一个表,当您传递“text”,或2,或new List()时,它将不起作用。它们不是属性,我认为您可以将其分为三个表,并将其用作标记。但是我看不到更大的图景。如果这些常量总是相同的,那么主键就是ConditionType属性。对于“SupplierCondition”,它总是相同的,对于另一个表,它是不同的。在
HasForeignKey()
调用中,匿名类型的结构使用了什么?如前所述,我正试图使用该构造来指定外键的名称。谢谢您的回答。我不能划分表,这是一个大系统,其他应用程序也可以访问。因此,不可能对数据库进行任何更改。我想我必须找到其他的解决办法…@OblTobl你找到解决这个问题的办法了吗?我在这里遇到了同样的问题,我开始有点沮丧了。@krpec不,不幸的是没有。现在,我使用了一种变通方法,从modelbuilder中删除了相应的Entite,并在相应的控制器中编写了方法,在该控制器中我可以手动构建联接。@OblTobl Ok,如果没有解决方案,那么基本上我得到了存储中的内容。谢谢你的回复@解决我的问题。但是我找不到外键表被击中的位置。控制器中的断点永远不会被击中,所以我现在不选择在控制器中设置逻辑。