我有 3 个实体:
Foo
Bar
UniqueFooBar
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