我有 3 个实体:
FooBarUniqueFooBar
Foo并且Bar是如下实体:
public class Bar {
public int Id {get; set;}
// inverse nav property
public virtual UniqueFooBar UniqueFooBar {get; set;}
}
public class Foo {
public string Name {get; set;}
// inverse nav property
public virtual UniqueFooBar UniqueFooBar {get; set;}
}
并且UniqueFooBar是如下查找:
public class UniqueFooBar {
public string FooName {get; set;}
public int BarId {get; set;}
// nav properties
public virtual Foo Foo {get; set;}
public virtual Bar Bar {get; set;}
}
有以下约束:
Foo是独特的- 两者之间存在一对一的关系,
Foo并且Bar Foo名字是PK流畅的API如下:
class UniqueFooBarConfiguration : EntityTypeConfiguration<UniqueFooBar> { public UniqueFooBarConfiguration() { // Define the tablename and schema Map(entity => entity.ToTable("UniqueFooBars")); //// Define non-conventional key HasKey(fooBar => fooBar.FooName); // Define FKs - 1-to-1 HasRequired(fooBar => fooBar.Foo) .WithRequiredPrincipal(foo => foo.UniqueFooBar) .Map(key => key.MapKey("FooName")); HasRequired(fooBar => fooBar.Bar) .WithRequiredPrincipal(bar => bar.UniqueFooBar) .Map(key => key.MapKey("BarId")); // -------------------------------- } }
正在发生的事情是FooName被添加到 Foo 表中并被添加到Bar BarId表中。
如果在 fluent API 配置中UniqueFooBar,我改为尝试使用 Foo 的“名称”属性,则该字段已存在的错误。如果我尝试使用 Bar 的“Id”属性,也会发生同样的情况。
如何将 UniqueFooBar 配置为具有 FKFoo.Name和Bar.Id一对一关系?
更新
- 既没有
Foo也没有Bar约束或要求 aUniqueFooBar。 - UniqueFooBar 记录需要 a
FooName和 aBarId