C# 具有一对一或零关系的FluentAPI
我似乎不能理解FluentAPI,我真的需要教育自己,但我希望在这方面取得领先 我有两个对象,C# 具有一对一或零关系的FluentAPI,c#,entity-framework,one-to-one,ef-fluent-api,C#,Entity Framework,One To One,Ef Fluent Api,我似乎不能理解FluentAPI,我真的需要教育自己,但我希望在这方面取得领先 我有两个对象,AccessLog,这将有一个可选的ExceptionLog对象,ExceptionLog将有一个可选的AccessLog 我相信这是一对一或零的呼叫 public class AccessLog : BaseLogObject { //...other properties public virtual ExceptionLog ExceptionLog { get; set; }
AccessLog
,这将有一个可选的ExceptionLog
对象,ExceptionLog
将有一个可选的AccessLog
我相信这是一对一或零的呼叫
public class AccessLog : BaseLogObject
{
//...other properties
public virtual ExceptionLog ExceptionLog { get; set; }
}
public class ExceptionLog : BaseLogObject
{
//...other properties
[Display(Name = "Access Log")]
public Guid? AccessLogID { get; set; }
public virtual AccessLog AccessLog { get; set; }
}
//BaseLogObject (contains the Key for each object)
public class BaseLogObject
{
public BaseLogObject()
{
Oid = Guid.NewGuid();
}
[Key]
[Column(Order = 0)]
public Guid Oid { get; set; }
}
我尝试了一些FluentAPI设置,但似乎都不起作用,例如:
modelBuilder.Entity<ExceptionLog>()
.HasOptional(x => x.AccessLog)
.WithOptionalDependent(x => x.ExceptionLog);
modelBuilder.Entity<AccessLog>()
.HasOptional(x => x.ExceptionLog)
.WithOptionalDependent(x => x.AccessLog);
modelBuilder.Entity<ExceptionLog>()
.HasKey(x => x.AccessLogID);
我相信这很简单,就像反向属性一样。谢谢你的帮助 我相信我已经弄明白了,使用与OP相同的类,可以应用以下FluentAPI:
modelBuilder.Entity<ExceptionLog>()
.HasOptional(x => x.AccessLog)
.WithOptionalDependent(x => x.ExceptionLog)
//.WithOptionalPrincipal(x => x.ExceptionLog)
;
modelBuilder.Entity()
.has可选(x=>x.AccessLog)
.带有可选依赖项(x=>x.ExceptionLog)
//.带有可选主体(x=>x.ExceptionLog)
;
这将允许我向AccessLog
添加任意数量的记录,然后添加ExceptionLog
记录,包括或不包括AccessLogID
希望这能帮助别人
modelBuilder.Entity<ExceptionLog>()
.HasOptional(x => x.AccessLog)
.WithOptionalDependent(x => x.ExceptionLog)
//.WithOptionalPrincipal(x => x.ExceptionLog)
;