我想使用Code First Fluent API配置两个实体以实现独立的单向1:1映射。但我正在努力获得正确的配置(即使我的架构看起来正确)。
模型;
class User {
Guid Id;
virtual Subscription ActiveSubscription;
}
class Subscription {
Guid Id;
virtual User Owner;
}
在此关系中,Subscription.Owner
应为NOT NULL
,但User.ActiveSubscription
应为NULLABLE
。
同一个Subscription
可能有多个User
,其中0..1
被引用为User.ActiveSubscription
。
我正在使用以下EntityTypeConfiguration实现,但我无法INSERT
这两个对象。
class UserMap : EntityTypeConfiguration<User> {
HasOptional(x => x.ActiveSubscription)
.WithOptionalDependent()
.Map(m => m.MapKey("ActiveSubscription_Id"))
.WillCascadeOnDelete(false);
}
class SubscriptionMap : {
HasRequired(x => x.Owner)
.WithOptional()
.Map(m => m.MapKey("Owner_Id"))
.WillCascadeOnDelete(true);
}
删除User
应该CASCADE DELETE
到Subscription
表,但不应该是反对关系的情况。
从此映射生成模式后,它看起来是正确的,但我在INSERT上遇到错误(“无法确定依赖操作的有效排序。”)